Соединение таблиц в MySQL - PullRequest
       1

Соединение таблиц в MySQL

1 голос
/ 07 сентября 2011

У меня есть две таблицы, а именно Студенты и Хобби со следующей структурой и записями:

ID,Name
-----------
9,Peter

10,Steve


ID,Hobby
-----------------
9,dancing

9,singing

10,learning

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

SELECT a.Name
FROM Students a
LEFT JOIN Hobbies h ON a.ID =h.ID

Это дает:

Name
----------
Peter
Peter
Steve

Я получил причину, это потому, что таблица Хобби имеет две записи ID =9, именно поэтому повторяющиеся записи развиваются, но как извлечь одну запись?Пожалуйста, помогите.

Я хочу это:

Name
-----------
Peter 
Steve

Ответы [ 4 ]

2 голосов
/ 07 сентября 2011
SELECT a.ID, a.Name
    FROM Students a
        LEFT JOIN Hobbies h
            ON a.ID = h.ID
    GROUP BY a.ID, a.Name

С помощью GROUP BY вы могли бы ответить на такие вопросы, как «Сколько хобби у каждого студента?»

SELECT a.ID, a.Name, COUNT(*) AS Number_of_Hobbies
    FROM Students a
        LEFT JOIN Hobbies h
            ON a.ID = h.ID
    GROUP BY a.ID, a.Name
1 голос
/ 07 сентября 2011

Это действительно не тот способ, которым следует использовать JOIN.

Если вы оставите присоединение к таблице без ссылок по константе, вы ничего не получите.

ответ на заданный вами вопрос "использоватьПредложение DISTINCT ":

SELECT DISTINCT a.Name FROM Students a LEFT JOIN Hobbies h ON a.ID = 9

... но на самом деле, я уверен, что это не то, что вы хотите сделать.

основываясь на комментариях, я верю, что намерение ОПбыло что-то вроде этого:

SELECT
    a.Name
FROM
    Students a
WHERE
    a.ID = <Student ID>;

... И, для хобби ссылка:

SELECT DISTINCT
    a.ID,
    a.Name
FROM
    Students a
INNER JOIN
    Hobbies h ON h.ID = a.ID
WHERE
    h.Hobby = <Hobby Name>;
0 голосов
/ 07 сентября 2011

Вы получаете дубликаты, потому что у Питера 2 хобби. Если вы хотите одну запись для каждого пользователя, сделайте это:

select * from Student where Id in (
Select DISTINCT Id from HobbY)
0 голосов
/ 07 сентября 2011

Используйте ключевое слово distinct:

SELECT distinct a.Name
FROM Students
etc....

Удаляет дублирующиеся строки, поэтому вы получите только одно имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...