Forum Webscript.Ru
Общие => Базы данных => Тема начата: Mr.Voron от 18 Апреля 2006, 20:46:20
-
Есть такие таблицы:proect(id,name_org,cat,eho,fio...),client(id,proect_id,fio,dolznost,tel...)hod(id,proect_id,chislo,zvonok,contact,rez...)
Таблицы связаны между собой, proect явл. основным, а cliebt и hod, подчиненые. Задача такая связать пока две таблицу по id из таблицы proect. Пытаюсь сделать вот что:$sql = mysql_query("SELECT proect.name_org,
proect.cat,
proect.who,
proect.fio,
proect.dolznost,
proect.tel,
proect.facs,
proect.mail,
proect.www,
proect.adres,client.fio AS fio2,client.dolznost AS dolz2,
client.tel AS tel2,client.facs AS facs2,client.mail AS mail2,client.www AS www2,
client.adres AS adres2,client.proect_id FROM proect,client
WHERE proect.id = client.proect_id
GROUP BY fio2");
while($row = mysql_fetch_array($sql)) {
Но нихрена не работает выдает все что находиться в двух таблицах. И в чем проблема ?
-
что именно тебе нужно вывести ?
-
Вывести надо данные из таблицы proect где id=1(или какому-то другому числу) + вывести данные из таблицы client, где proect_id будет равен id из proect т.е proect.id.
-
Mr.Voron
WHERE poect.id = client.proect_id && proect.id = 1
-
А, для 3 таблиц вот така значит:
WHERE proect.id = client.proect_id && proect.id = 1 AND proect.id = hod.proect_id && proect.id = 1
-
Mr.Voron
может пора уже прочесть про связи между таблицами ?
-
Я вот сделал с 3 таблицами. Вот только не пойму почему ошибка когда нет данных в таблице 3 то,скрипт не работает. Экран весь белый.=( Как моня решить проблему?
-
Mr.Voron
Скорее всего тебе поможет соединение LEFT JOIN (http://www.mysql.ru/docs/man/LEFT_JOIN_optimisation.html)
-
Я слыхал про такую команду. Вот не пойму как она рабоатет. Можите обьяснить хоть как она рабоатет?
-
Mr.Voron
я же дал ссылку в которой все конретно сказанно. Неужели ты думаешь, что я смогу сделать это лучше разработчиков СУБД ?
-
Прости даже не заметил что там ссылка=)
-
Как то не пойму все равно, как все оно работает.
Я вот атк написал но теперь выдает все сразу что в БД.
FROM proect LEFT JOIN client ON (proect.id = client.proect_id && proect.id = $secret_id) LEFT JOIN hod ON (proect.id = hod.proect_id && proect.id = $secret_id)
-
Вот теперь так сделал: (По моему все работает)
FROM proect LEFT JOIN client ON (proect.id = client.proect_id) LEFT JOIN hod ON (proect.id = hod.proect_id)
WHERE proect.id = $secret_id
Вот только теперь другая проблема. Когда у меня несколько данных надо выводить во второй и 3 таблици он дублирует информацию первой таблицы.
Ну если не понятно в чем проблема, то вот фотки.
http://bogi-olimpa.info/add/LEFT_JOIN.jpg (http://bogi-olimpa.info/add/LEFT_JOIN.jpg)
http://bogi-olimpa.info/add/LEFT_JOIN-2.jpg (http://bogi-olimpa.info/add/LEFT_JOIN-2.jpg)