2009-07-17 22 views
13

Mam dwie tabele. Pierwszy to użytkownik; składa się z nazwy użytkownika i identyfikatora użytkownika. Drugim jest wyszukiwanie, które składa się z userid i zapytania.Jak połączyć dwie tabele w zapytaniu?

Po wybraniu tabeli wyszukiwania chcę, aby identyfikator użytkownika został zastąpiony przez nazwę użytkownika, pobierając dane z tabeli użytkownika. Czy to ma sens?

+-------+----------+ 
|userid | username | 
+-------+----------+ 
| 1 | foo1 | 
+-------+----------+ 
| 2 | foo2 | 
+-------+----------+ 
| 3 | foo3 | 
+-------+----------+ 
| 4 | foo4 | 
+-------+----------+ 

+-------+----------+ 
|userid | query | 
+-------+----------+ 
| 1 | blah1 | 
+-------+----------+ 
| 2 | blah2 | 
+-------+----------+ 
| 3 | blah2 | 
+-------+----------+ 
| 4 | blah2 | 
+-------+----------+ 

Czy można to zrobić za pomocą pojedynczego zapytania?

Odpowiedz

63

Szukasz inner join. Byłoby to zrobić:

SELECT s.query, u.username 
FROM search s 
INNER JOIN users u 
ON s.userid = u.userid 
+13

dobrze, że było dziwne downvote ... –

+10

upvote na tym linku. – seth

+0

Dobra odpowiedź. –

2
SELECT u.`username`, s.`query` 
    FROM `search` s 
     INNER JOIN `users` u ON s.`userid` = u.`userid` 
3
SELECT username, query FROM Users, Queries WHERE Users.userid=Queries.userid; 
Powiązane problemy