0
私は2つのテーブルを持っています。以下のように作成されます。MySQLのフィルタリング結合テーブルのフィールドに基づいて選択
CREATE TABLE item (
id INT AUTO_INCREMENT,
value VARCHAR(64),
PRIMARY KEY(id)
)
CREATE TABLE tag (
name VARCHAR(32),
item_id INT /* id of element in item table */
)
私はそのテーブルにリンク「タグ」テーブルのすべての要素と一緒に「アイテム」テーブル内の要素のリストを返すselect文を持っています。これはitem.valueフィールドの内容でフィルタリングされます。
SELECT id,value,GROUP_CONCAT(tag.name) FROM item
LEFT JOIN tag ON tag.item_id = id
WHERE value LIKE '%test%'
これまでのところすべて良いです。今私は同じことをしたいが、特定のタグが関連付けられているすべてのアイテムテーブルの要素のリストを取得したい。だから私は
WHERE tag.name='test'
これは私にそれが唯一のタグ「テスト」を含んで一緒に来て、タグ「試験」が、グループ化されたタグリストを持っているすべての「アイテム」要素のリストを与えるとWHEREクエリを置き換えます。
タグ 'test'を持つテーブル 'item'の全要素のリストを、完全なグループタグリストと一緒に取得するにはどうすればよいですか?
GROUP BYの欠如はタイプミスでしたが、試していないし、うまくいきました。歓声 – Spads
HAVING SUM(t.name = 'test')= 0を使用すると、 NOT句にタグがない項目を返さない別の問題を解決するタグ。乾杯 – Spads