powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подзапросы
4 сообщений из 4, страница 1 из 1
Подзапросы
    #32503847
Необходимо сделать

Код: plaintext
1.
2.
SELECT a INNER JOIN b ON a.key1=b.key1 
   LEFT OUTER JOIN (SELECT key2 FROM c WHERE key3=$var3) c ON b.key2=c.key


Не работает. Насколько я понял (разубедите меня), в MySQL запрещены подзапросы во FROM...

Если делать не подзапрос, а просто

Код: plaintext
1.
2.
3.
SELECT a INNER JOIN b ON a.key1=b.key1 
   LEFT OUTER JOIN c ON b.key2=c.key
WHERE c.key3=$var3


,то в итоговый запрос не попадают строки a и b, которым нет соответствующих значений в c (так как после пересечения key3=NULL)

Как можно выкрутиться из этой ситуации? Не хочется пересекать a и b, а потом делать отдельный запрос для каждой строки...
...
Рейтинг: 0 / 0
Подзапросы
    #32503893
Второй вариант можно сделать как

Код: plaintext
1.
2.
3.
SELECT a INNER JOIN b ON a.key1=b.key1 
   LEFT OUTER JOIN c ON b.key2=c.key
WHERE (c.key3=$var3) OR (c.key3 IS NULL)


Правильно?

А первый вариант нереализуем?
...
Рейтинг: 0 / 0
Подзапросы
    #32504014
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) У тебя, наверное, опечатка - нет " * FROM " между select и a . Далее
2) Подзапросы вообще появились только с версии 4.1 (тут тебя никто не будет разубеждать)
3) Если используешь WHERE c.key3=$var3 , то естественно в результат не попадут записи где c.key3<>$var3 , а будут например NULL

Поэтому первый вариант не пройдет.
Второй вариант более соответствуeт твоим ожиданиям.
Могу подкинуть третий:

Код: plaintext
1.
SELECT * FROM a INNER JOIN b ON a.key1=b.key1 
   LEFT OUTER JOIN c ON (b.key2=c.key AND c.key3=$var3)



Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
Подзапросы
    #32504275
Пасибо, опечатка, конечно. Третий вариант мне понравился, стормозил я... Точнее, опыта не хватило. Счас попробую...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подзапросы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]