mysql - выбирает отдельные строки из 2 разных таблиц - PullRequest
0 голосов
/ 22 сентября 2018
Table 1(pending_order)

Link

Table 2(user)

link

Запрос:

SELECT DISTINCT * FROM user,pending_order WHERE user.id= pending_order.user_id

Ожидаемый o / p: только 2 строки, поскольку есть 2отложенные заказы от пользователя 1,2.Но я получаю все строки таблицы pending_order вместе с таблицей user.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Правильнее будет использовать Inner Join в этом случае:

SELECT DISTINCT users.*
FROM user Inner Join pending_order
On user.id = pending_order.user_id

Join типов (inner / full / right ..) - это случаи, когда выВы хотите объединить результаты из нескольких связанных таблиц в одном запросе.

Подробнее об этом можно прочитать здесь: https://www.tutorialspoint.com/sql/sql-using-joins.htm

0 голосов
/ 22 сентября 2018

Ваш запрос должен работать.Но я бы написал его так:

SELECT u.*, po.*
FROM user u JOIN
     pending_order po
     ON u.id = po.user_id;

Это должно вернуть только пользователя 2, у которого есть отложенный ордер.

Если вы хотите, чтобы только пользователи имели отложенные ордера, используйте `exist:

select u.*
from user u
where exists (select 1
              from pending_order po
              where u.id = po.user_id
             );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...