D: yorum ve etiketleri uzunlukları değişen içerik öğelerini Birleştirme

0 Cevap php

Ben her satırı ile ilişkili görüş ve etiketleri sonucu uzunlukları değişen var bir içerik tablo var. Ben bir çırpıda içeriğin bir parçası için tüm bu bilgileri almak için nasıl emin değilim.

Ben kolayca içerik bilgisini (id) almak ve yorumlar ve etiketler için her tablo sorgulamak için bir sorgu yapabilir ama daha iyi bir yolu var sanki çok mantıklı gibi görünüyor değil.

Any tips or suggestions? Thanks in advance!

Thomas

Benim sorgu SO uzak gibi görünüyor:

SELECT c.*, GROUP_CONCAT(tagWords.tagWord SEPARATOR ', ') AS tags FROM platform.contents c
LEFT OUTER JOIN platform.contentTags ON contentTags.contentId = c.contentId
LEFT OUTER JOIN platform.tagWords ON contentTags.tagId = tagWords.tagId
WHERE  c.contentType = 'album' LIMIT 10

GROUP_CONCAT büyük ve tüm ama tablolar büyüyecek gibi ben her tablodan alanları ve gerekir. :/

Benim masa düzenleri:

mysql> explain contentComments;
+--------------+---------------------+------+-----+-------------------+-------+
| Field        | Type                | Null | Key | Default           | Extra |
+--------------+---------------------+------+-----+-------------------+-------+
| contentId    | bigint(19) unsigned | NO   | MUL | NULL              |       |
| userId       | bigint(19) unsigned | NO   |     | NULL              |       |
| message      | varchar(255)        | YES  |     | NULL              |       |
| stampCreated | timestamp           | NO   |     | CURRENT_TIMESTAMP |       |
+--------------+---------------------+------+-----+-------------------+-------+
4 rows in set (0.00 sec)

mysql> explain contentTags;
+-----------+------------+------+-----+---------+-------+
| Field     | Type       | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+-------+
| contentId | bigint(20) | NO   | MUL | NULL    |       |
| tagId     | bigint(20) | YES  |     | NULL    |       |
+-----------+------------+------+-----+---------+-------+
   2 rows in set (0.00 sec)

mysql> explain contents;
+------------------+-----------------------------------------+------+-----+-------------------+----------------+
| Field            | Type                                    | Null | Key | Default                   | Extra          |
+------------------+-----------------------------------------+------+-----+-------------------+----------------+
| contentId        | bigint(20)                              | NO   | PRI | NULL              | auto_increment |
| contentType      | enum('video','album','blogpost','news') | NO   |     | NULL              |                |
| userId           | bigint(19) unsigned                     | NO   | MUL | NULL              |                |
| contentTitle     | varchar(45)                             | YES  |     | NULL              |                |
| contentDesc      | varchar(255)                            | YES  |     | NULL                  |                |
+------------------+-----------------------------------------+------+-----+-------------------+----------------+

mysql> explain tagWords;
+---------+---------------------+------+-----+---------+----------------+
| Field   | Type                | Null | Key | Default | Extra          |
+---------+---------------------+------+-----+---------+----------------+
| tagId   | bigint(19) unsigned | NO   | PRI | NULL    | auto_increment |
| tagWord | varchar(45)         | YES  |     | NULL    |                |
+---------+---------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

0 Cevap