2013-12-03 4 views
1

Я немного потерял здесь. Я хотел бы объединить эти два запроса в один, чтобы избежать двух соединений и упростить код.SQL присоединиться к двум запросам

"SELECT uname FROM Projects WHERE id IN (SELECT MAX(id) FROM Projects)" 

"SELECT name FROM Users WHERE username like"+"'"+ uname +"'" 

Сейчас я использую два запроса и беру результат первого во второй. Я уверен, что два вопроса могут стать одним, но я не знаю, как это сделать.

ответ

1

Вы можете просто использовать =, а не LIKE, так как я не использую символ шаблона, такой как %.

SELECT a.name 
FROM Users a 
     INNER JOIN Projects b 
      ON a.username = b.uname 
WHERE b.ID = (SELECT MAX(id) FROM Projects) 
+1

отлично работает. Большое спасибо – FeliceM

1

Вы можете попробовать, как это с помощью INNER JOIN, учитывая, что оба ваших таблиц связаны через User_ID

SELECT u.name 
FROM Users u INNER JOIN Projects p ON u.username = p.uname 
WHERE p.ID = (SELECT MAX(id) FROM Projects) 
+0

Спасибо за помощь, но я пытался избежать переменной uname. – FeliceM

+0

Действительно спасибо. Что я могу сказать, + – FeliceM

+0

@FeliceM: - Да, хотя я обновил свой ответ сейчас;) Надеюсь, что тоже будет работать –

1

я думаю, что следующий запрос будет работать:

SELECT name FROM Users WHERE username in 
    (SELECT uname FROM Projects WHERE id IN 
     (SELECT  MAX(id) FROM Projects)) 
+0

Бинго! Это прекрасно работает. +, сначала отвечает китайский парень, а также работает. Большое спасибо. – FeliceM

+0

добро пожаловать. –

Смежные вопросы