Получите 2x результат столбца 1 той же таблицы - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть таблица users и таблица friends.

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

- users (_id_, username, firstname, lastname)
- friends (_#id1, #id2_)

Вот некоторые данные:

- users (1, foo, Foo, BAR)
        (2, john, John, DOE)
- friends (1, 2)

Если я запрашиваю дружбу WHERE id1 = 1 OR id2 = 1, я знаю, что с JOIN я могу получить для каждой строки пользовательские данные. Но как получить в 1 результате (1 строке) данные обоих пользователей?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012
SELECT
    u1.*,
    u2.*
FROM
    friends
    JOIN users AS u1
        ON friends._#id1=u1._id_
    JOIN users AS u2
        ON friends.#id2_=u2._id_
1 голос
/ 02 апреля 2012
SELECT u1.*, u2.*
FROM users u1
JOIN friends f1
ON u1._ID_ = friends._#id1_
JOIN users u2
ON u2._ID_ = friends._#id2_

Каждая строка будет содержать всю информацию от одного пользователя, а затем всю информацию от второго пользователя.Возможно, вы захотите заменить этот первый JOIN friends f1 на LEFT OUTER JOIN friends f1, чтобы также отобразить строку для пользователей без друзей.

Осторожно: пользователь с несколькими друзьями покажет несколько строк.В MySQL нет автоматического способа поворота этих строк в столбцы.Однако вы можете GROUP на u1._ID_, а затем использовать функцию GROUP_CONCAT для отображения информации о друзьях.

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