2009-07-05 2 views
0

Я пытаюсь выяснить, что делать здесь. Посмотрите на эти таблицы:Как бы я сделал объединение трех таблиц с сервером sql

пользователи

идентификатор, имя пользователя, пароль

книги

идентификатор, название

users_books

BookID, идентификатор пользователя

Как объединить их вместе? Если бы я, например, хотел видеть книги пользователя 47?

+0

Домашнее задание? Что вы пробовали? –

+0

Привет, Томми. Это звучит как вопрос домашней работы. Это нормально, но могли бы вы сказать, что вы пробовали, и какие у вас были проблемы? Похоже, вы пытаетесь заставить кого-то сделать все это для вас, что некоторые люди не любят. Им нравится думать, что вы пробовали в первую очередь. –

+0

Он также имеет довольно неспецифическую тему. Вероятно, сейчас есть несколько тысяч вопросов о SO, которые соответствовали бы этой же теме! Было бы намного лучше, если бы вы сказали: «Как мне сделать соединение трех таблиц с SQL-сервером». –

ответ

1

Если вы используете SQL Server, этот запрос должен работать.

select books.title 

from books, users_books 

where books.id = users_books.bookID and users_books.id = 47 
+0

О, ну. Надеюсь, это было не домашнее задание, или кто-то должен будет помочь ему завтра. –

+0

Мое мнение таково, что люди, которые задают домашние вопросы без пометки их домашней работы, должны получить ответ. У меня нет никаких сомнений в том, чтобы дать им прямые ответы, поскольку это имеет то преимущество, что им становится труднее избавить меня от работы позже (так как они неизменно глупы).:-) – paxdiablo

+0

Я бы предположил, что вы, возможно, подождали достаточно долго, чтобы он решил ответить. Кстати, ИМХО, так же много риска, что он поставит тебя на работу. Проблема в том, что как только он занят чьей-то работой, он не сможет этого сделать, потому что мы позволили ему обойтись без изучения чего-либо. Я вижу здесь много вопросов (хотя и в других местах) людьми, которые действительно не должны выполнять эти задания (это вежливая версия). –

0
select b.title from users_books ub 
    join books b on b.id = ub.bookID 
    where ub.userID = 47 
+0

Joel, я не вижу, как это отличается от ответа m-sharp. –

+2

Он не использует подразумеваемые объединения, с одной стороны. –

+0

«from books, users_books» - это объединение, с другим синтаксисом. –

2

Ну, если это домашнее задание, то вместо того, чтобы давать рыбу каждый день, учит, как рыба будет более полезным.

Я надеюсь, что следующие ссылки будут способствовать пониманию SQL joins-

http://www.sql-tutorial.net/SQL-JOIN.asp

http://www.tizag.com/sqlTutorial/sqljoin.php

Насколько ваш присоединиться запрос касается, ответ дается «м-диез» должно дать вам правильный ответ.

веселит

+0

Андреев: Спасибо за уроки рыбалки! Я не имею в виду уроки. –

+0

Да, Джон. Я согласен с вашими комментариями :-) – Arnkrishn

0

Поскольку ни один из других ответов не присоединяющиеся три таблицы (ваш вопрос заголовок состояния три, но ваше тело нуждается только два), я дам вам версию три таблицы.

Для этого я предполагаю, что у вас есть имя пользователя, а не идентификатор. В этом случае, вы можете сделать:

select 
    u.id as user_id, 
    u.username as user_name, 
    b.id as book_id, 
    b.title as book_title 
from 
    users u, 
    books b. 
    user_books ub 
where u.username = 'username-of-user-47' 
and u.id = ub.userID 
and b.id = ub.bookID 

Такого рода вещи также может быть сделано с явными JOIN с, но я предпочитаю «старой школы» способы SQL особенно, когда СУБД достаточно умен, чтобы оптимизировать его в том же как мои любимые DB2/z :-)

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