SQL-запрос не возвращает несколько строк на соответствующий элемент в соединении - PullRequest
0 голосов
/ 05 ноября 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 и n соответствующих элементов из таблицы Suggestion_solution_comments для каждого section_name.Таким образом, для каждого имени раздела запрос должен получить список предлагаемых_комментариев_связи, связанных с ним.

Таблицы связаны с помощью предлагаются_решения_комментариев.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 OR suggested_solution_id IS NULL
    group by display_order;

Проблема заключается в том, что запрос получает список имя_раздела и один соответствующий комментарий на имя_раздела, но не более одного комментария.Любая идея, почему он не получает все связанные комментарии?

Спасибо !!

1 Ответ

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

GROUP BY может объяснить то, что вы видите, попробовать без него (ОБНОВЛЕНИЕ согласно комментариям)

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 OR suggested_solution_id IS NULL
order by display_order;

Некоторые замечания:

Ваша модель данных кажется немного странной ... например, solution_part равен int(3) и связан с solution_section_id, который в свою очередь является autoincrement int(10)?

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