2012-01-16 17 views
7

Mam dwie tabele w mojej bazie danych SQL Server. Pierwszy to Test1, a drugi to Test2. W obu tabelach znajduje się kolumna RegNo.Jak wybrać wartości z dwóch różnych tabel w SQL

Teraz chcę wybrać wartości z obu tabel dla określonego RegNo.

To co robię

SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1,Test2 JOINS 
Test2 ON Test1.RegNo = Test2.RegNo 

Ale moje zapytanie daje błąd.

Odpowiedz

6
SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 
INNER JOIN Test2 ON Test1.RegNo = Test2.RegNo 
+0

ponieważ RegNo znajduje się w obu tabelach możesz również użyć 'USING'' SELECT Test1.SurName, Test2.Class, Test2.Medium Z Test1 INNER JOIN Test2 USING (RegNo) ' –

+1

@Bondye Tak, możesz - ale nie powinieneś: kończysz z tym samym planem wykonania, ale z fragmentem SQL, który nie jest dobrze portowany. Moja zasada: jeśli funkcja specyficzna dla platformy przynosi wydajność lub funkcjonalność: Użyj jej. Jeśli po prostu przeformułuje przenośną konstrukcję: Do ** not ** użyj jej. –

8
select 
    Test1.SurName, 
    Test2.Class, 
    Test2.Medium 
from Test1 
inner join Test2 
on Test1.RegNo = Test2.RegNo 

A jeśli chcesz wybrać swoje dane dla konkretnego RegNo, wystarczy dodać WHERE klauzuli do końca, tak jak poniżej:

select 
    Test1.SurName, 
    Test2.Class, 
    Test2.Medium 
from Test1 
inner join Test2 
on Test1.RegNo = Test2.RegNo 
where Test1.RegNo = 123456 -- or whatever value/datatype your RegNo is 
+0

Ci, gdzie szybciej ode mnie, awansowali :) – Marco

+0

@Marco :) Dziękuję! Wygląda na to, że to tylko kwestia sekund. ;) –

3
SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 
INNER JOIN Test2 
ON Test1.RegNo = Test2.RegNo 

proszę zobaczyć a visual explanation of joins to bardzo pomocny w nauce łączenia.

+0

ci, gdzie szybciej. +1 –

1

Spróbuj tego:

SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 INNER JOIN Test2 
ON Test1.RegNo = Test2.RegNo 
WHERE Test1.RegNo = desired_id 
1

pytanie bardzo proste, wypróbuj Google następnym razem, i to teraz:

SELECT Test1.SurName, Test2.Class, Test2.Medium 
FROM Test1 
inner join Test2 ON Test1.RegNo = Test2.RegNo 
1

Oto zapytanie z korektą.

SELECT Test1.SurName, Test2.Class, Test2.Medium 
    FROM Test1 INNER JOIN Test2 ON Test1.RegNo = Test2.RegNo where Test2.RegNo=Test1.RegNo; 

Ponadto można filtrować zapytania poprzez dostarczanie Regno, w zależności od tego na stół u chcą.

Powiązane problemy