Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 09:13   #1
Helion
 
Аватар для Helion
 
Регистрация: 29.04.2009
Сообщений: 9
По умолчанию Сокращение количества запросов

Подскажите, пожалуйста!
У меня есть таблица users вида:

Код:
uid name last_name mother father
1   Николай Владимирович 0 0
2   Людмила Николаевна 0 0
3   Максим Николаевич 2 1
Как мне вывести одним запросом данные Максима с его родителями. Я могу это вывести при помощи 3 запросов:

Код:
SELECT * FROM users WHERE uid=3
SELECT * FROM users WHERE uid=$res["mother"]
SELECT * FROM users WHERE uid=$res["father"]
Я думаю что это можно сделать одним запросом?
Нумерология онлайн - сайт для мамы
Вертолетная авиация - сайт профессии Калитка в мой скромный блог - Асинхронные мысли и Ложь - Поиск истины
Helion вне форума Ответить с цитированием
Старый 10.07.2011, 10:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Первое что пришло в голову:
Код:
SELECT * FROM users WHERE uid in (3,$res["mother"],$res["father"])
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.07.2011, 10:48   #3
Helion
 
Аватар для Helion
 
Регистрация: 29.04.2009
Сообщений: 9
По умолчанию

Я только после первого запроса узнаю указаны ли uid отца и матери у человека.
Может можно на SQL сделать вложенные запросы: если mother не пусто, то запросить данные матери.
Нумерология онлайн - сайт для мамы
Вертолетная авиация - сайт профессии Калитка в мой скромный блог - Асинхронные мысли и Ложь - Поиск истины
Helion вне форума Ответить с цитированием
Старый 10.07.2011, 11:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
SELECT child.*,mama.*,papa.* FROM users child
 Left join users mama WHERE mama.uid=child.mother
 Left join users papa WHERE papa.uid=child.father
WHERE uid=3
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.07.2011, 15:13   #5
Helion
 
Аватар для Helion
 
Регистрация: 29.04.2009
Сообщений: 9
По умолчанию

Спасибо, буду думать.
У меня данные хранятся в одной таблице про всех людей и указаны родственные связи мать и отец.
По вашему примеру я более полно понял смысл join, а то ни как не врубался как он работает.
Спасибо!
Нумерология онлайн - сайт для мамы
Вертолетная авиация - сайт профессии Калитка в мой скромный блог - Асинхронные мысли и Ложь - Поиск истины
Helion вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сокращение расстояния Хэмминга Molotoff Общие вопросы C/C++ 1 14.01.2011 11:48
Сокращение if AxenicX Общие вопросы C/C++ 2 07.11.2009 16:08
Сокращение вывода Nightwolf Microsoft Office Access 1 23.04.2009 08:33
сокращение дроби Demonmov Microsoft Office Excel 4 15.04.2009 11:54
Сокращение выражения Simon..14 Общие вопросы C/C++ 4 25.01.2009 13:33