MySQL Relational Query - является ли JOIN ответом? - PullRequest
0 голосов
/ 27 июня 2018

Я пишу основную систему форумов для моего сайта с использованием MySQL. Мне нужен способ отслеживать не только сообщения, но и ответы TO сообщений. Поскольку в каждом сообщении может быть только ONE родитель, но в конечном итоге может быть MULTIPLE детей, я думаю, мне нужны две таблицы. Первая таблица содержит как минимум заголовки, тела и родителей каждого сообщения. Вторая таблица содержит только ссылку на РОДИТЕЛЕЙ сообщений и их соответствующие ДЕТИ , вот так:

Posts Table

ID |  PARENT  |  TITLE  |  POST
1  |          |  Msg 1  |  Body 1
2  |          |  Msg 2  |  Body 2
3  |          |  Msg 3  |  Body 3
4  |  2       |  Msg 4  |  Body 4
5  |  1       |  Msg 5  |  Body 5
6  |          |  Msg 6  |  Body 6
7  |          |  Msg 7  |  Body 7
8  |  5       |  Msg 8  |  Body 8
9  |          |  Msg 9  |  Body 9
10 |  1       |  Msg 10 |  Body 10
11 |  1       |  Msg 11 |  Body 11
12 |  2       |  Msg 12 |  Body 12


Children Table

ID |  PARENT  |  CHILDREN   
1  |  2       |  4           
2  |  1       |  5 
3  |  5       |  8 
4  |  1       |  10 
5  |  1       |  11
6  |  2       |  12  

В этом примере Сообщение 1 имеет 3 детей: 5, 10 и 11. Сообщение 2 имеет 2 детей: 4 и 12. И т. Д.

Вооружившись этой информацией, я пытаюсь найти лучший способ определить дочерних элементов подмножества из моего списка сообщений (скажем, сообщения с 5 по 10)? Позволит ли соединение какого-нибудь типа одному запросу получить родителей и любых соответствующих детей? Или мне лучше выполнять отдельные запросы к каждому родительскому сообщению, чтобы определить его потомков?

Я пытаюсь разобраться в JOIN, и это чертовски непонятно. Извините, если это основной материал, но заранее спасибо.

1 Ответ

0 голосов
/ 28 июня 2018
Select parent, group_concat(title) from posts where 
parent!='' group by parent;

Начните здесь и посмотрите, что происходит.

...