Автор Тема: Выборка из двух таблиц, при условии AND...  (Прочитано 6021 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Лосик

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос. Есть две таблицы:

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

и

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

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

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

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

Попытки извращаться с разнообразными подзапросами, скобками, логикой не спасают...

Оффлайн Zotoff

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выборка из двух таблиц, при условии AND...
« Ответ #1 : 14 Июня 2004, 21:27:33 »
SELECT filial_name FROM company, filial WHERE company.company_id=filial.company_id AND (company.address="Питер" OR company.address="Москва")

Попробуй так.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Выборка из двух таблиц, при условии AND...
« Ответ #2 : 14 Июня 2004, 21:28:42 »
Цитировать
address="Питер" AND address="Москва"

И как это должно работать в связке and? :)
OR поможет + скобки :)
2B OR NOT 2B = FF

Оффлайн Лосик

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выборка из двух таблиц, при условии AND...
« Ответ #3 : 14 Июня 2004, 21:33:19 »
А, сорри, забьыл указать, это тоже не то. Выбирает и тех, у кого есть филиал _ИЛИ_ в Питере _ИЛИ_ в Москве... Нужны только те, у кого _И_ там и там...

Ни скобки ни чего -- не катит. Ибо, насколько понял (роюсь уже доках неделю как 8) -- при просмотре по строкам в случае AND это AND это, выполнятель запросов ищет строку, которая соотв ествовала бы и тому и другому условию, что невозможно... (но это предположение).

Оффлайн Лосик

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выборка из двух таблиц, при условии AND...
« Ответ #4 : 14 Июня 2004, 21:56:23 »
Все-таки, похоже SQL на такое не способен (без хитрых извращений) принципиально...

Оффлайн Zotoff

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выборка из двух таблиц, при условии AND...
« Ответ #5 : 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 пока очень слаб.

Оффлайн Лосик

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выборка из двух таблиц, при условии AND...
« Ответ #6 : 14 Июня 2004, 22:39:54 »
Только если, хотя в случае N городов строить N запросов и объединять их...;-)

Оффлайн Zotoff

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выборка из двух таблиц, при условии AND...
« Ответ #7 : 14 Июня 2004, 22:46:40 »
Поаторю, я только начинающий. Возможно есть более простое решение. Погоди немного старшаков, и скачай ман! Там, как оказалось =))), много всего полезного + на русском все.

Оффлайн Лосик

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Выборка из двух таблиц, при условии AND...
« Ответ #8 : 14 Июня 2004, 23:05:18 »
Я ж грю, доки курю уже неделю...;-)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28