Отображение данных MySQL в таблицу HTML (ясно объяснено) - PullRequest
0 голосов
/ 26 октября 2009

Хорошо, у меня есть приложение, описанное в этом сообщении: https://stackoverflow.com/questions/1623105/good-database-structure-for-a-new-web-app

Я подготовил сценарий, чтобы сделать мой вопрос максимально понятным:

Users table:
    +----------+-----------------+
    | user_id  | email           |
    +----------+-----------------+
    | user_1   | user1@email.com |
    | user_2   | user2@email.com |
    | user_3   | user3@email.com |
    | user_4   | user4@email.com |
    +----------+-----------------+

* Обратите внимание, что user_3 и user_4 не имеют своих собственных доменов

Domains table:
    +-----------+------------+
    | owner_id  | domain     |
    +-----------+------------+
    | user_1    | dom-1.com  | 
    | user_1    | dom-2.com  |
    | user_2    | dom-3.com  |
    +------------------------+

В таблице ниже показано, кто является пользователем домена, а кто - владельцем:

User-Domain table:
    +----------+-------------+-----------+
    | user_id  | domain      | owner_id  |
    +------------------------+-----------+
    | user_1   | dom-1.com   | user_1    |
    | user_1   | dom-2.com   | user_1    |
    | user_2   | dom-3.com   | user_2    |
    | user_3   | dom-1.com   | user_1    |
    | user_3   | dom-2.com   | user_1    |
    | user_4   | dom-1.com   | user_1    |
    +------------------------+-----------+

Мой вопрос: как вывести список каждого пользователя, использующего домен данного пользователя, в следующем формате?

Например (ниже приведена таблица HTML):

List of users who are using User_1's domains (HTML TABLE):
        +-------------------+-----------------------+
        | Email             | domains               |
        +-------------------+-----------------------+
        | user3@email.com   | dom-1.com, dom-2.com  |
        | user4@email.com   | dom-1.com             |
        +-------------------+-----------------------+

1 Ответ

3 голосов
/ 26 октября 2009

Этот запрос должен дать вам результаты. Отображение таблицы HTML из нее должно быть достаточно простым.

SELECT
   u.email,
   group_concat(d.domain SEPARATOR ', ')
FROM
   domains d
   JOIN user_domain ud ON d.domain=ud.domain AND d.owner_id=ud.owner_id AND d.owner_id!=ud.user_id
   JOIN users u on ud.user_id=u.user_id
WHERE d.owner_id='user_1'
GROUP BY u.email

Вы в основном выбираете все домены, принадлежащие 'user_1', затем все user_ids для этих доменов и затем всех пользователей для этих user_ids. После этого вы группируете результаты по электронной почте пользователя и объединяете все доменные имена, которые использует пользователь.

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