2012-01-16 4 views
7

У меня есть две таблицы в моей базе данных SQL Server. Первый - Test1, второй - Test2. В обеих таблицах есть столбец RegNo.Как выбрать значения из двух разных таблиц в SQL

Теперь я хочу выбрать значения из обеих таблиц для определенного RegNo.

Это то, что я делаю

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

Но мой запрос дает ошибку.

ответ

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

, потому что RegNo находится в обеих таблицах, вы также можете использовать 'USING'' SELECT Test1.SurName, Test2.Class, Test2.Medium FROM Test1 INNER JOIN Test2 ИСПОЛЬЗОВАНИЕ (RegNo)' –

+1

@Bondye Да, вы могли бы - но вам не следует: вы получаете тот же план выполнения, но с snipplet SQL, который плохо переносится. Мое эмпирическое правило: если функция, специфичная для платформы, приносит производительность или функциональность: используйте ее. Если он просто перефразирует переносную конструкцию: Do ** not ** use it. –

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

И если вы хотите, чтобы выбрать данные для конкретного RegNo, просто добавьте пункт WHERE до конца, например, так:

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

вы, где быстрее меня, поддержали :) – Marco

+0

@Marco :) Спасибо! Похоже, это всего лишь секунды. ;) –

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

см a visual explanation of joins это очень полезно в обучении.

+0

вы, где быстрее. +1 –

1

Попробуйте это:

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

Очень простой вопрос, попробуйте Google в следующий раз, и это сейчас:

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

Вот ваш запрос с коррекцией.

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

Также вы можете отфильтровать запрос, предоставляя REGNO, на какой стол у хочу.

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