Как объединить таблицы, чтобы каждый элемент в одной из них отображался независимо от объединенной таблицы - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть 2 таблицы:

mysql> describe solution_sections;
+---------------------+---------------+------+-----+---------+----------------+
| Field               | Type          | Null | Key | Default | Extra          |
+---------------------+---------------+------+-----+---------+----------------+
| solution_section_id | int(10)       | NO   | PRI | NULL    | auto_increment |
| display_order       | int(10)       | NO   |     | NULL    |                |
| section_name        | varchar(1000) | YES  |     | NULL    |                |
+---------------------+---------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> describe suggested_solution_comments;

+-----------------------+----------------+------+-----+---------+----------------+
| Field                 | Type           | Null | Key | Default | Extra          |
+-----------------------+----------------+------+-----+---------+----------------+
| comment_id            | int(10)        | NO   | PRI | NULL    | auto_increment |
| problem_id            | int(10)        | NO   |     | NULL    |                |
| suggested_solution_id | int(10)        | NO   |     | NULL    |                |
| commenter_id          | int(10)        | NO   |     | NULL    |                |
| comment               | varchar(10000) | YES  |     | NULL    |                |
| solution_part         | int(3)         | NO   |     | NULL    |                |
| date                  | date           | NO   |     | NULL    |                |
+-----------------------+----------------+------+-----+---------+----------------+

Что я пытаюсь сделать, это отобразить список section_name из таблицы solution_sections.В нем всего около 10 рядов.И для каждого имени раздела, чтобы получить список предлагаемых_комментариев_преобразования, связанных с ним.

Таблицы связаны по предположению_революции_комментариев.solution_part и solution_sections.solution_section_id

Вот что я пытаюсь до сих пор:

select section_name , comment , solution_part , display_order from solution_sections 
    left join suggested_solution_comments on 
    solution_sections.solution_section_id = suggested_solution_comments.solution_part   
    where suggested_solution_id = 188
    group by display_order;

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

Спасибо !!

Ответы [ 3 ]

2 голосов
/ 04 ноября 2011

Проблема здесь:

where suggested_solution_id = 188

Для вашего запроса необходимо, чтобы значение параметра Предлагаемое_решение было равно 188, что никогда не будет верно для записей, в которых нет комментариев. Попробуйте добавить в это:

OR suggested_solution_id IS NULL

1 голос
/ 04 ноября 2011

Используя suggested_solution_id в выражении where, вы исключаете из результата любую строку, у которой нет содержимого нет соответствующей строки в таблице suggested_solution_comments.

Если вы хотите получить результаты, даже если suggested_solution_comments не имеет содержимого, вы не можете использовать это поле в предложении where. или вы должны рассмотреть возможность того, что suggested_solution_id может быть NULL.

РЕДАКТИРОВАНИЕ , чтобы принять во внимание комментарий @ X-Zero

0 голосов
/ 04 ноября 2011

Я думаю, что ваша структура таблицы не самая лучшая для этого. если у вас есть только первичный ключ в каждой таблице, и вы хотите выполнить соединение с ними, необходимо будет сослаться на ту же вещь. В противном случае вводится внешний ключ, способный соединяться с первичным ключом в другой таблице.

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