2012-04-22 3 views
0

У меня есть таблица в SQL, я использую это заявление, чтобы сделать выбор:Выберите в SQL с параметром ид

SELECT id, name, genre FROM table 

Теперь genre это идентификатор (целое) и у меня есть таблица под названием Жанры и там у меня есть:

id (int) 
name (string) 

Какой выбор даст мне в жанре имя, а не идентификатор.

+2

Что вы пытаетесь сделать? Какой SQL у вас есть до сих пор, и какие результаты это дает вам? –

+0

Я сомневаюсь, что я должен представить, как ответ или нет. Это, конечно, неясно, что вы хотите спросить. – Lion

+0

Ну что ж, вопросы: какая БД вы запрашиваете? Какой код вы использовали для выполнения запроса? Вы уже можете написать запрос на консоли БД, который дает желаемый результат? –

ответ

1
SELECT t.id, t.name, g.name 
FROM table t, genres g 
WHERE t.genre = g.id 
+0

Это делает то же, что и [принятый ответ] (http://stackoverflow.com/a/10267007/578288), но гораздо медленнее. В общем, 'JOIN' быстрее, чем декартово произведение и 'WHERE'. По крайней мере, я узнал, что в [Класс систем баз данных] (https://www.cs.drexel.edu/~jsalvage/Winter2012/CS461/index.html), но я не помню объяснения позади этого. –

+2

@ RoryO'Kane Нет, это не имеет никакого значения. См. Http://stackoverflow.com/questions/121631/inner-join-vs-where – user1135357

+1

Вы правы. Я спросил об этом своего профессора, и он сказал, что он не означает, что «ГДЕ» был медленнее. Для целей обучения он хотел, чтобы мы избегали синтаксиса 'WHERE', потому что его можно использовать только для * внутреннего * соединения. Он хотел, чтобы мы изучили синтаксис «INNER JOIN» вместо этого, чтобы потом было легче научить нас «ВЗАИМОДЕЙСТВУЮЩИЙ», «ЛЕВЫЙ ПРИСОЕДИНЕНИЕ» и т. Д., Которые имеют одинаковый синтаксис. –

0

Вы должны использовать Join

select G.name 
    from table table1 T,Genres G 
    where T.genre = G.id; 
Смежные вопросы