Mysql-запрос для получения данных из 2 таблиц - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть 2 следующие таблицы:

Users (user_id, user_name, ... )
Photo (photo_id, user_id, ...)

Как я могу получить photo_id, предоставив только user_name. Нужно ли мне сделать 2 запроса, первый запрос, чтобы получить user_id из таблицы Users, указав user_name, и после того, как я получу user_id, я должен выполнить второй запрос, чтобы получить photo_id, указав user_id.

ИЛИ это не очень хороший подход, скорее я должен присоединиться к таблицам и получить photo_id, указав имя пользователя в одном запросе? Как это должно быть сделано? Благодаря.

Ответы [ 3 ]

1 голос
/ 07 апреля 2011

Я бы сделал это в одном запросе, используя соединение:

select Users.user_id, Photo.photo_id
from Photo
    inner join Users on Users.user_id = Photo.user_id
where Users.user_name = 'YOUR NAME HERE'


Примечание: я выбрал user_id, так как несколько пользователей могут иметь одно и то же имя (возможно)

0 голосов
/ 07 апреля 2011

Для чего нужны соединения:

select u.*, p.* from users u join photo p on p.user_id = u.user.id
where u.user_name = 'the name'

Выполнение двух запросов в этом случае значительно снизит производительность из-за накладных расходов, связанных с отправкой исходного кода в ядро ​​базы данных, компиляцией запроса и т. Д.

0 голосов
/ 07 апреля 2011

ВЫБЕРИТЕ u.user_id, p.photo_id ОТ ПОЛЬЗОВАТЕЛЕЙ, КАК ВНУТРЕННЕЕ СОЕДИНИТЬСЯ ФОТО КАК ВКЛЮЧЕНО u.user_id = p.user_id ГДЕ u.user_name = '$ username';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...