Двойной LEFT JOIN

Эдди

Новичок
да мне тоже кажется что он гонит..
1 запрос - 1 ответ.
3 запроса - 3 ответа
Эдди
произнеси один раз и до конца "Надо вывести все страны КОТОРЫЕ ...."
НАДО ВЫВЕСТИ ОДИН РАЗ КАЖДУЮ СТРАНУ.
И ПРИ ТОМ В КАЖДОЙ ВЫВОДИМОЙ СТРОКЕ ПОНЯТЬ, ЕСТЬ ЛИ УЛИЦА В ГОРОДЕ ПО ЭТОЙ СТРАНЕ!!!
Ну куда еще понятнее объяснить?
Подскажите, объясню.
 

WMix

герр M:)ller
Партнер клуба
каждая страна это не город! совсем не понятно
и пожалуйста не кричи.
 

С.

Продвинутый новичок
Твоя задача решается не джойнами. Просто выкачиваешь все три таблицы тремя ОТДЕЛЬНЫМИ запросами. Затем пробегаешь тремя вложенными циклами по спискам. Все!
 

Эдди

Новичок
каждая страна это не город! совсем не понятно
и пожалуйста не кричи.
Кричать не буду больше.
И еще раз повторяю, что не требую готового решения.
Но ты ведь сам привел МОЙ пример.
Плевать на джойн.
Как определить, что у данной страны (через таблицу Города) есть записи в таблице Улицы?
 

WMix

герр M:)ller
Партнер клуба
вопрос сколько улиц в стране?

PHP:
select c.*, count(*) as  количество_улиц
from countries c
left join towns t on c.id = t.cid
left join streets s on t.id = s.tid 
where s.id is not null
group by c.id
 

Эдди

Новичок
вопрос сколько улиц в стране?

PHP:
select c.*, count(*) as  количество_улиц
from countries c
left join towns t on c.id = t.cid
left join streets s on t.id = s.tid 
where s.id is not null
group by c.id
Попробую сейчас. Только не "сколько улиц в стране". А есть они или нет вообще.
 

WMix

герр M:)ller
Партнер клуба
без улиц страны будут изначально отсортированы и не показаны
PHP:
where s.id is not null
 

Эдди

Новичок
без улиц страны будут изначально отсортированы и не показаны
PHP:
where s.id is not null
Мюль Ну сейчас пойду и удавлюсь.-(
Надо:
Россия
Италия
Франция
США
Бангладеш...

И чтобы рядом со страной вывелось ОК или NO.
ОК - когда в городах страны есть улицы.
NO - когда улиц в городах этих стран улиц не обнаружено в БД.

Ну ё-моё.
Дело стоит.

Делаю полную реконструкцию сайта.
Не хочу сделать криво.
Где вообще ФАНАТ? :)

Уже писал, что делаю редизайн и реструктуризацию сайта.

Хотя Мюллер, подожди. Проверю и этот вариант.
 

WMix

герр M:)ller
Партнер клуба
свои всплески нежности направь в другую сторону
 

WMix

герр M:)ller
Партнер клуба
PHP:
SELECT c . * , IF( SUM( IF( s.id IS NULL , 0, 1 ) ) >0, 'OK', 'NO' ) AS 'рядом со страной вывелось'
FROM countries c
LEFT JOIN towns t ON c.id = t.cid
LEFT JOIN streets s ON t.id = s.tid
GROUP BY c.id
 

ksnk

прохожий
А exists тут не будет более уместен?
PHP:
SELECT * 
FROM  `countries` 
WHERE EXISTS (
SELECT * 
FROM sity
JOIN streets ON sity.id = streets.sity
WHERE sity.country = countries.id
)
 
Сверху