我試圖搜索所有具有所有已輸入標籤的用戶,但它通過查找同一列來搜索它們。通過查詢同一列獲取具有所有輸入值的所有行
SELECT u.*, t.* FROM user u
LEFT JOIN user_tags ut ON u.id = ut.user_id
LEFT JOIN tags t ON ut.tag_id = t.id
WHERE t.name = tag1 AND t.name = tag2
我按標籤僅搜索和每個用戶都必須全部錄入的標籤,而不僅僅是1.我使用PHP基於值的數量再添及條款進入,所以如果有3個值將如下所示:
SELECT u.*, t.* FROM user u
LEFT JOIN user_tags ut ON u.id = ut.user_id
LEFT JOIN tags t ON ut.tag_id = t.id
WHERE t.name = tag1 AND t.name = tag2 AND t.name = tag3
t.name只包含1個標記名稱,而不是以逗號分隔的值。標籤名稱是通過user_tags錶鏈接到每個用戶,每個用戶ID可以在多個標籤ID,像這樣:
user_id | tag_id
40 | 3
40 | 4
41 | 1
41 | 2
41 | 3
而我當前的查詢返回任何內容,因爲沒有列具有所有3個標籤名稱。
所以我猜t.name是一個逗號分隔的字段?必須使用'LIKE'進行字符串搜索 – wesside
您可以告訴我們更多關於存儲在t.name中的內容嗎? – Toby
您可以添加具有預期結果的樣本記錄嗎? –