Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> три таблицы, как связать ? 
:(
    Опции темы
pipka
Дата 21.2.2005, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



Здравствуйте, строение моей таблицы таково:
есть 3 таблицы - artikel, artikel_kategorie, kategorie
ПыСы: выбор делаю из интернет шопа. поэтому перестройку баз делать не могу.

всё проблема в том, что я не могу сделать выбор. Мне нужно разбить артикли по категориям.

В таблице artikel, идёт идентификация по артиклям
В таблице artikel_kategorie идёт связка артикль-категория
в таблице kategorie присутствует описание категорий, их названия и позиция в каталоге

Я хочу сделать выборку, а именно чтобы был выбор из базы kategorie названий категорий и их номера. позиция меня не интересует. Далее по этому номеру из таблицы artikel_kategorie идёт выбор позиций которые присвоены определённым категориям, которые я уже выбрал. Из таблицы артикль идёт уже выбор продукции... по идентификатору.

Вот как это всё делать ? я думал, но ещё не пробовал, делать всё по очереди, а именно делаю выбор например артиклей для категории записываю всё скажем в $art-kat и потом при селекте вставляю SELECT $art-kat FROM Artikel....
возможно ли это и кпак лучше сделать ? может быть ктото уже имел опыт работы с этим ?

ПыСы: как записывать пхп в код запросa sql ?

SELECT '$art-kat' FROM artikel ? или как ? заранее благодарю за помощь и поддержку ;)

Привет Вовану.
Добавлено @ 10:43
Таблица с именем: artikel имеет 26 нижеследующих полей:

ИМЯ ПОЛЯ: Artikel_ID, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;
ИМЯ ПОЛЯ: Artikel_Nr, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 128;
ИМЯ ПОЛЯ: Name, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 128;
ИМЯ ПОЛЯ: Beschreibung, ТИП ПОЛЯ: blob, ДЛИННА ПОЛЯ: 65535;
ИМЯ ПОЛЯ: Preis, ТИП ПОЛЯ: real, ДЛИННА ПОЛЯ: 22;
ИМЯ ПОЛЯ: Haendlerpreis, ТИП ПОЛЯ: real, ДЛИННА ПОЛЯ: 22;
ИМЯ ПОЛЯ: Aktionspreis, ТИП ПОЛЯ: real, ДЛИННА ПОЛЯ: 22;
ИМЯ ПОЛЯ: Aktionspreis_verwenden, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 1;
ИМЯ ПОЛЯ: Gewicht, ТИП ПОЛЯ: real, ДЛИННА ПОЛЯ: 22;
ИМЯ ПОЛЯ: Link, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: Bild_gross, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: Bild_klein, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: Bildtyp, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 15;
ИМЯ ПОЛЯ: Bild_last_modified, ТИП ПОЛЯ: timestamp, ДЛИННА ПОЛЯ: 14;
ИМЯ ПОЛЯ: Lagerbestand, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;
ИМЯ ПОЛЯ: Mindestlagermenge, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;
ИМЯ ПОЛЯ: Lieferbar_in, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: Lagerverhalten, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: letzteAenderung, ТИП ПОЛЯ: date, ДЛИННА ПОЛЯ: 10;
ИМЯ ПОЛЯ: Zusatzfeld_text, ТИП ПОЛЯ: blob, ДЛИННА ПОЛЯ: 65535;
ИМЯ ПОЛЯ: Zusatzfeld_param, ТИП ПОЛЯ: blob, ДЛИННА ПОЛЯ: 65535;
ИМЯ ПОЛЯ: MwSt_Satz, ТИП ПОЛЯ: real, ДЛИННА ПОЛЯ: 22;
ИМЯ ПОЛЯ: Aktion_von, ТИП ПОЛЯ: datetime, ДЛИННА ПОЛЯ: 19;
ИМЯ ПОЛЯ: Aktion_bis, ТИП ПОЛЯ: datetime, ДЛИННА ПОЛЯ: 19;
ИМЯ ПОЛЯ: Aktiv_von, ТИП ПОЛЯ: datetime, ДЛИННА ПОЛЯ: 19;
ИМЯ ПОЛЯ: Aktiv_bis, ТИП ПОЛЯ: datetime, ДЛИННА ПОЛЯ: 19;



Таблица с именем: artikel_kategorie имеет 3 нижеследующих полей:

ИМЯ ПОЛЯ: a_k_ID, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;
ИМЯ ПОЛЯ: FK_Artikel_ID, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;
ИМЯ ПОЛЯ: FK_Kategorie_ID, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;



Таблица с именем: kategorien имеет 13 нижеследующих полей:

ИМЯ ПОЛЯ: Kategorie_ID, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;
ИМЯ ПОЛЯ: Positions_Nr, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 11;
ИМЯ ПОЛЯ: Name, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 128;
ИМЯ ПОЛЯ: Beschreibung, ТИП ПОЛЯ: blob, ДЛИННА ПОЛЯ: 65535;
ИМЯ ПОЛЯ: MwSt_Satz, ТИП ПОЛЯ: real, ДЛИННА ПОЛЯ: 22;
ИМЯ ПОЛЯ: Bild_gross, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: Bild_klein, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: Bildtyp, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 15;
ИМЯ ПОЛЯ: Bild_last_modified, ТИП ПОЛЯ: timestamp, ДЛИННА ПОЛЯ: 14;
ИМЯ ПОЛЯ: Unterkategorie_von, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 128;
ИМЯ ПОЛЯ: Details_anzeigen, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 1;
ИМЯ ПОЛЯ: Tab_text, ТИП ПОЛЯ: string, ДЛИННА ПОЛЯ: 255;
ИМЯ ПОЛЯ: elmar_ID, ТИП ПОЛЯ: int, ДЛИННА ПОЛЯ: 2;
PM MAIL   Вверх
Opik
Дата 21.2.2005, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 2
Всего: 55



Код

select ac.*, a.*, c.*
from artikel_kategorie as ac
left join artikel as a on (ac.FK_Artikel_ID = a.Artikel_ID)
left join kategorien as c (c.Kategorie_ID = as.FK_Kategorie_ID)

попробуй так smile
PM MAIL Skype   Вверх
pipka
Дата 21.2.2005, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



как должен выглядить результат в пхп ?
PM MAIL   Вверх
Opik
Дата 21.2.2005, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 2
Всего: 55



Код

$query = mysql_query("select ac.*, a.*, c.*
from artikel_kategorie as ac
left join artikel as a on (ac.FK_Artikel_ID = a.Artikel_ID)
left join kategorien as c (c.Kategorie_ID = as.FK_Kategorie_ID");

а по идее это тебе решать как
PM MAIL Skype   Вверх
pipka
Дата 21.2.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



Код

select ac.*, a.*, c.*


как это понять ? не могу понять как вывести результат, не пока что пишет ошибку что запрос не верный.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web4/html/katalog/kategorie.php on line 23
PM MAIL   Вверх
Wowa
Дата 21.2.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



ac, a и с - это псевдонимы таблиц. Чтобы не использовать при запросе постоянно длинные имена таблиц - делают псеводнимы.
Добавлено @ 14:33
Вот тебе функции:

Код

function myquery ($query) {
 $result = mysql_query($query);
      if (mysql_errno())
          echo "MySQL error ".mysql_errno().": ".mysql_error()."\n<br>When executing:<br>\n$query\n<br>";
      return $result;
}

// Для однострочных запросов
function db_row($query) {
 $r=mysql_query($query);
 if (!$r) die("MySQL error ".mysql_errno().": ".mysql_error()."\n<br>When executing:<br>\n$query\n<br>");
 if (!mysql_num_rows($r)) return 0;
 return mysql_fetch_array($r);
}


используй вместо mysql_query - myquery. А для однострочный запросов db_row.

Добавлено @ 14:39
Цитата(pipka @ 21.2.2005, 12:01)
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web4/html/katalog/kategorie.php on line 23

эта ошибка говорит о том, что ошибка в запросе у тебя. Использую мою функцию myquery ты сможешь увидеть именно место ошибки в запросе.
PM WWW   Вверх
Wowa
Дата 21.2.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



надо так:
Код

$query = myquery("select ac.*, a.*, c.*
from artikel_kategorie as ac
left join artikel as a on (ac.FK_Artikel_ID = a.Artikel_ID)
left join kategorien as c on (c.Kategorie_ID = as.FK_Kategorie_ID");

PM WWW   Вверх
IZ@TOP
Дата 21.2.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 4
Всего: 73



pipka, а почему артикель? А всю жизнь считал что у товаров бывает "артикул"... или это что-то новенькое?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
pipka
Дата 21.2.2005, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



IZ@TOP
это на немецком
PM MAIL   Вверх
pipka
Дата 21.2.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



Код

$query = myquery("select ac.*, a.*, c.*
from artikel_kategorie as ac
left join artikel as a on (ac.FK_Artikel_ID = a.Artikel_ID)
left join kategorien as c on (c.Kategorie_ID = ac.FK_Kategorie_ID)
WHERE Kategorie_ID = '12'");
function myquery ($query) {
 $result = mysql_query($query);
      if (mysql_errno())
         echo "MySQL error ".mysql_errno().": ".mysql_error()."\n<br>When executing:<br>\n$query\n<br>";
      return $result;
}

echo("<table>");
while($row = mysql_fetch_array($result))
{
echo("<tr><td><td><a href=\"javascript:NeuFenster('".$row['Bild_gross']."')\"><img src='".$img_src."".$row['Bild_klein']."' style=\"border: 4px dashed #E6E6E6\"></a> </td><td><font size=+1>".$row['Name']."<br>Art-Nr: <b>".$row['Artikel_Nr']."</font></b><br>".$row['Beschreibung']."</td></td></tr>");
}
echo("</table>");


пишет, что ошибка... как искоренить ?
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /srv/www/htdocs/web4/html/katalog/kategorie.php on line 29
Добавлено @ 15:28
Код

while($row = mysql_fetch_array($result))


29ая строка
PM MAIL   Вверх
Wowa
Дата 21.2.2005, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



while($row = mysql_fetch_array($query))
PM WWW   Вверх
pipka
Дата 21.2.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



так, результат белая страница.
PM MAIL   Вверх
pipka
Дата 21.2.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



со всем справился.
и так вопрос: smile
вывод тоже делать: a.Name ?
PM MAIL   Вверх
Wowa
Дата 21.2.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



нет, по имени столбца.
PM WWW   Вверх
pipka
Дата 21.2.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.12.2004

Репутация: 0
Всего: 2



дайте мне пример вывода на экран данных плиз
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.