Forum Webscript.Ru

Общие => Базы данных => Тема начата: Лосик от 14 Июня 2004, 20:55:00

Название: Выборка из двух таблиц, при условии AND...
Отправлено: Лосик от 14 Июня 2004, 20:55:00
Вопрос. Есть две таблицы:

Компания
company_id
address
...

и

Филиалы
filial_id
company_id
address
...

В них, потяное дело, живут "компании", которые имеют разный address и их филиалы, по каждому из которых хранится company_id и опять же address. Вопрос -- как выбрать все филиалы одной компании, которые находятся в N указаных городов? Конструкция вида

SELECT * FROM Компания, Филиалы WHERE Компания.company_id=Филиалы.company_id AND address="Питер" AND address="Москва"

естественным образом не канает.

Попытки извращаться с разнообразными подзапросами, скобками, логикой не спасают...
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Zotoff от 14 Июня 2004, 21:27:33
SELECT filial_name FROM company, filial WHERE company.company_id=filial.company_id AND (company.address="Питер" OR company.address="Москва")

Попробуй так.
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Chs от 14 Июня 2004, 21:28:42
Цитировать
address="Питер" AND address="Москва"

И как это должно работать в связке and? :)
OR поможет + скобки :)
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Лосик от 14 Июня 2004, 21:33:19
А, сорри, забьыл указать, это тоже не то. Выбирает и тех, у кого есть филиал _ИЛИ_ в Питере _ИЛИ_ в Москве... Нужны только те, у кого _И_ там и там...

Ни скобки ни чего -- не катит. Ибо, насколько понял (роюсь уже доках неделю как 8) -- при просмотре по строкам в случае AND это AND это, выполнятель запросов ищет строку, которая соотв ествовала бы и тому и другому условию, что невозможно... (но это предположение).
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Лосик от 14 Июня 2004, 21:56:23
Все-таки, похоже SQL на такое не способен (без хитрых извращений) принципиально...
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Zotoff от 14 Июня 2004, 22:37:55
SELECT filial_name FROM company, filial WHERE company.company_id=filial.company_id AND company.address="Питер" UNION SELECT filial_name ac filial_name2 FROM company, filial WHERE company.company_id=filial.company_id AND company.address="Москва"

=))) а потом

if (mysql_result($zap,0,"filial_name")==mysql_result($zap,0,"filial_name2")){
 
и пошел их отоброжать. Другово выхода не вижу, но я в SQL пока очень слаб.
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Лосик от 14 Июня 2004, 22:39:54
Только если, хотя в случае N городов строить N запросов и объединять их...;-)
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Zotoff от 14 Июня 2004, 22:46:40
Поаторю, я только начинающий. Возможно есть более простое решение. Погоди немного старшаков, и скачай ман! Там, как оказалось =))), много всего полезного + на русском все.
Название: Выборка из двух таблиц, при условии AND...
Отправлено: Лосик от 14 Июня 2004, 23:05:18
Я ж грю, доки курю уже неделю...;-)