Forum Webscript.Ru

Общие => Базы данных => Тема начата: Mr.Voron от 18 Апреля 2006, 20:46:20

Название: Обьединение двух и трех таблиц таблиц
Отправлено: 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)) {
Но нихрена не работает выдает все что находиться в двух таблицах. И в чем проблема ?
Название: Обьединение двух и трех таблиц таблиц
Отправлено: for_i_0 от 18 Апреля 2006, 21:40:13
что именно тебе нужно вывести ?
Название: Обьединение двух и трех таблиц таблиц
Отправлено: Mr.Voron от 18 Апреля 2006, 21:48:38
Вывести надо данные из таблицы proect где id=1(или какому-то другому числу) + вывести данные из таблицы client, где proect_id будет равен id из proect т.е proect.id.
Название: Обьединение двух и трех таблиц таблиц
Отправлено: for_i_0 от 19 Апреля 2006, 08:28:25
Mr.Voron
WHERE poect.id = client.proect_id && proect.id = 1
Название: Обьединение двух и трех таблиц таблиц
Отправлено: Mr.Voron от 20 Апреля 2006, 08:30:09
А, для 3 таблиц вот така значит:
 
WHERE proect.id = client.proect_id && proect.id = 1 AND proect.id = hod.proect_id && proect.id = 1
Название: Обьединение двух и трех таблиц таблиц
Отправлено: for_i_0 от 20 Апреля 2006, 09:17:22
Mr.Voron
может пора уже прочесть про связи между таблицами ?
Название: Обьединение двух и трех таблиц таблиц
Отправлено: Mr.Voron от 21 Апреля 2006, 21:07:43
Я вот сделал с 3 таблицами. Вот только не пойму почему ошибка когда нет данных в таблице 3 то,скрипт не работает. Экран весь белый.=( Как моня решить проблему?
Название: Обьединение двух и трех таблиц таблиц
Отправлено: for_i_0 от 21 Апреля 2006, 21:29:26
Mr.Voron
Скорее всего тебе поможет соединение LEFT JOIN (http://www.mysql.ru/docs/man/LEFT_JOIN_optimisation.html)
Название: Обьединение двух и трех таблиц таблиц
Отправлено: Mr.Voron от 21 Апреля 2006, 21:34:32
Я слыхал про такую команду. Вот не пойму как она рабоатет. Можите обьяснить хоть как она рабоатет?
Название: Обьединение двух и трех таблиц таблиц
Отправлено: for_i_0 от 21 Апреля 2006, 21:44:44
Mr.Voron
я же дал ссылку в которой все конретно сказанно. Неужели ты думаешь, что я смогу сделать это лучше разработчиков СУБД ?
Название: Обьединение двух и трех таблиц таблиц
Отправлено: Mr.Voron от 21 Апреля 2006, 21:45:44
Прости даже не заметил что там ссылка=)
Название: Обьединение двух и трех таблиц таблиц
Отправлено: Mr.Voron от 22 Апреля 2006, 21:35:28
Как то не пойму все равно, как все оно работает.
Я вот атк написал но теперь выдает все сразу что в БД.
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)
Название: Обьединение двух и трех таблиц таблиц
Отправлено: Mr.Voron от 23 Апреля 2006, 10:51:58
Вот теперь так сделал: (По моему все работает)
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)