Задавайте вопросы, мы ответим
Вы не зашли.
Может запарился , но уже более 2-х часов бьюсь не получается составить запрос.
Есть такие таблицы
parents
id
name
_______
children1
parent_id
field2
_______
children2
parent_id
field3
_______
children1 и children2 связаны оношением один к одному c parents.
Как пример возьмем такие тестовые данные
parents
id name
1 lalala
2 blabla
_________
children1
parent_id field2
1 555
_________
children2
parent_id field3
2 777
Так же есть таблица она связана с children2
children2_types
children2_id
type
_____________
В ней такие данные
children2_types
children2_id type
2 1
_______________
Мне надо выбрать все записи из таблицы parents с условием где type = 2. Т.е. в выборку должна попасть строка с id = 1, ну а если type = 1 то обе строки.
Не пинайте строга если не заметил очевидного решения.
Заранее спасибо за помощь.
Неактивен
Я правильно понимаю, что type есть только у таблицы children2? Если да, то
SELECT p.*
FROM parents p
JOIN children2 c ON c.parent_id = p.id
JOIN children2_types t ON c.children2_id = c.id
WHERE t.type = 2;
Неактивен
paulus написал:
Я правильно понимаю, что type есть только у таблицы children2? Если да, то
SELECT p.*
FROM parents p
JOIN children2 c ON c.parent_id = p.id
JOIN children2_types t ON c.children2_id = c.id
WHERE t.type = 2;
Попробовал не заработало, возвращает только одну строку c parent_id = 2, но это и не удивительно так как
SELECT p.*
FROM parents p
JOIN children2 c ON c.parent_id = p.id
При объединении возвращает одно строку.
Решил это задачку использую union но хочется без него.
Неактивен
Оно и не может вернуть больше одной строки, т.к. с type=2 есть только одна строка.
Неактивен
paulus написал:
Оно и не может вернуть больше одной строки, т.к. с type=2 есть только одна строка.
Да, но задача то в другом, надо вывести все строки но только некоторые(вот в этом то и трабла) должны пройти через определенное условие.
Неактивен
Попробуйте собраться с мыслями и написать словами абсолютно точно критерий
выбора строк. Если нужно выбрать «все» строки, то «некоторые» туда попадут
автоматически (закон логики такой), поэтому можно выбирать просто «все» строки.
Неактивен