MySQL Relational Query - является ли JOIN ответом?
Я пишу основную систему форума для моего сайта с использованием MySQL. Мне нужен способ отслеживать не только сообщения, но и ответы на сообщения. Поскольку в каждом сообщении может быть только ОДИН родитель, но в конечном итоге может быть НЕСКОЛЬКО детей, я думаю, мне нужны две таблицы. Первая таблица содержит как минимум заголовки, тела и родителей каждого сообщения. Вторая таблица содержит только ссылку на сообщения РОДИТЕЛЯ и соответствующих им ДЕТЕЙ, вот так:
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 ответ
Select parent, group_concat(title) from posts where
parent!='' group by parent;
Начните здесь и посмотрите, что происходит.