Два выбранных утверждения в одном утверждении - PullRequest
2 голосов
/ 29 августа 2011

У меня в основном есть две таблицы с именами images и users. Таблица images имеет следующие поля:

i_id | s_id | u_id | name | filename |

u_id - это внешний ключ для поля u_id в таблице users, которая имеет следующие поля:

u_id | username | password | email |

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

SELECT s_id, u_id, name, filename, filesize FROM images WHERE name = 'fYhWId'

Это возвращает u_id пользователя, между прочим. Но я хочу вернуть имя пользователя, а не их u_id. В общем, в этом операторе SELECT я также хочу выполнить:

SELECT username FROM users WHERE u_id = 1

Я мог бы использовать два запроса для этого, но я пытаюсь сократить количество запросов, выполняемых моим приложением, и я знаю, что есть способ объединить это в один запрос, но я просто не знаю его: <</p>

Кто-нибудь знает ответ? Спасибо!

Ответы [ 2 ]

7 голосов
/ 29 августа 2011

Вам необходимо присоединиться к столам

SELECT i.s_id, i.u_id,u.username, i.name, i.filename, i.filesize 
FROM images i 
INNER JOIN users u 
on u.u_id = i.u_id 
WHERE i.name = 'fYhWId'
3 голосов
/ 29 августа 2011
SELECT username FROM users WHERE u_id = (SELECT TOP 1 u_id FROM images WHERE name = 'fYhWId')

или

SELECT username FROM users WHERE u_id IN (SELECT u_id FROM images WHERE name = 'fYhWId')

или

SELECT username,  s_id, images.u_id, name, filename, filesize 
FROM images 
INNER JOIN users on images.u_id = users.u_id
WHERE name = 'fYhWId'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...