簡體   English   中英

如何從MySQL的三個表中獲取數據?

[英]How do I obtain data from three tables in MySQL?

我有三個表:

  1. gallery_items
  2. gallery_album_items
  3. gallery_tags

我已經設法加入了前兩個表,但是如何將gallery_tags表添加到以下查詢中?

SELECT *
FROM gallery_items
RIGHT JOIN gallery_album_items 
ON gallery_items.id=gallery_album_items.id 
WHERE gallery_items.name LIKE '%{$term}%' 
OR gallery_items.description LIKE '%{$term}%'

本質上我想添加:

OR gallery_tags.tag LIKE '%{$term}%'

表結構

gallery_items
id   name     description
12   Sharon   This is sharon's description
26   Rhett    This is rhett's description
33   Lincoln  This is lincoln's description


gallery_album_items
id   album
12   14 
26   12
33   7


gallery_tags
id   item     tag
23   12       blonde
43   26       tall
3    33       glasses

本質上,我想要搜索“ blonde”的結果: Sharon金發女郎 ,在專輯#14中

(您不必提供echo語句。這只是一個顯示結果的示例。)

編輯-最終答案

SELECT DISTINCT gallery_items.id 
FROM gallery_items
RIGHT OUTER JOIN gallery_album_items ON gallery_items.id = gallery_album_items.id
LEFT JOIN gallery_tags ON gallery_items.id = gallery_tags.item
WHERE gallery_items.active !=  '0'
AND (gallery_items.name LIKE '%blonde%'
OR gallery_items.description LIKE '%blonde%'
OR gallery_tags.tag LIKE '%blonde%'
SELECT *

FROM gallery_items 

RIGHT OUTER JOIN gallery_album_items 

ON gallery_items.id=gallery_album_items.id 

LEFT OUTER JOIN  gallery_tags 

ON gallery_tags.id   =  gallery_album_items.id     

WHERE gallery_items.name LIKE '%{$term}%' 

OR gallery_items.description LIKE '%{$term}%'

OR gallery_tags.tag LIKE '%{$term}%'

對這個

SELECT *
FROM gallery_items
RIGHT JOIN gallery_album_items 
   ON gallery_items.id=gallery_album_items.id 
LEFT JOIN gallery_tags
   ON gallery_tags.id = gallery_items.id
WHERE gallery_items.name LIKE '%{$term}%' 
OR gallery_items.description LIKE '%{$term}%'
SELECT *
FROM gallery_items
RIGHT JOIN gallery_album_items 
ON gallery_items.id=gallery_album_items.id
LEFT JOIN gallery_tags on gallery_items.id on gallery_tags.id  
WHERE gallery_items.name LIKE '%{$term}%' 
OR gallery_items.description LIKE '%{$term}%'

請嘗試一下

select gi.name, gai.ablum, gt.tag 
    from 
    gallery_items as gi JOIN gallery_album_items as gai 
    on gt.id=gai.id 
    Join gallery_tags as gt 
    on gi.id=gt.items

除了使用表名,還可以使用別名來編寫聯接查詢,以便在考慮邏輯時更好地理解。 我嘗試了以下一項,希望對您有所幫助。


創建表g_i(id int,name varchar(20),descp nvarchar(max))

插入g_i值(12,'asf 12','description 12')插入g_i值(26,'asf 26','description 26')插入g_i值(33,'asf 33','description 33' )從g_i選擇*


創建表g_a(id int,專輯varchar(20))插入g_a值(12,'相冊12')插入g_a值(26,'相冊26')插入g_a值(33,'相冊33')選擇*來自g_a


創建表g_t(id int,item int,標簽nvarchar(40))插入g_t值(23,12,'標簽12')插入g_t值(43,26,'標簽26')插入g_t值(3 ,33,'tag 33')從g_t選擇*


選擇 *

從g_i作為i右加入g_a作為ON i.id = a.id向左加入g_t作為t在t.item = i.id上

i.name之類的'%t%'或i.descp之類的'%t%'


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM