Сложный запрос к базе данных

Porks

Новичок
Здравструйте!
имеется 2 таблицы, которые необходимо соединить друг с другом. в первой есть id (целочисленный идентификатор) и user_name(набор букв), во второй 3 поля: id_1(целочисленный идентификатор), id_2(целочисленный идентификатор), state(число 0 или 1). нужно вытащить из первой таблицы все поля, где id совпадает с id_1 и id_2 второй таблицы и state = 1
 

Dovg

Продвинутый новичок
Тебе нужен обычный join.

Покажи как ты пробовал.
 

Ragazzo

TDD interested
Dovg в условии не сказано что нужны также записи для которых условие не выполняется, т.е. дополняются несуществующие атрибуты NULL, так что обычный WHERE AND.
 

Dovg

Продвинутый новичок
Ragazzo
Не вижу принципиально разницы между select from table1, table2 where ... and ... и select from table1 join table2 on () where ...
 

Ragazzo

TDD interested
Dovg использование оператора не по назначению с целью получения результат не есть хорошо. Но да, в эксплейне многих запросов where на 2 таблицы через AND показывается как LEFT JOIN почему-то, что впринципе одно и то же по функционалу.
 

Porks

Новичок
SELECT * FROM table_1 JOIN table_2 ON table_1.id = table_2.id_1 WHERE state = 1 AND table_2.id_2 = table_1.id ... что-то подобное должно получиться, только чтоб выборка была из обоих столбцов id_1 и id_2....
 

Porks

Новичок
с 50-й попытки удалось написать рабочий запрос... выглядит примерно так SELECT * FROM table_1 join table_2 ON table_1.id = table_2.id_user_1 where state = 1 AND WHERE table_2.id_1 = table_1.id OR WHERE table_1.id_2 = table_1.id
 
Сверху