簡體   English   中英

連接三(3)個MySQL表

[英]Join three (3) MySQL tables

不幸的是,我不像SQL那樣好,我正在嘗試完成三個表之間的聯接。

這是一個粗略的簡化表結構:

links: id, url, description
categories: id, name, path
link_cat: link_id, cat_id

我要的選擇語句應該有

links.id, link.url, link.description, categories.name, categories.path

通過link_cat表匹配鏈接和類別的位置。 我認為,只要每個鏈接只有一個類別,這應該不太難。 這就是我所假設的。 如果不是這樣,則最好采用另一種方式將多個類別逗號分隔為category.name字段。

我希望這一切都是可以理解的,聽上去不會太傻。

# Add each field you want to the select list
SELECT links.id, link.url, link.description, categories.name, categories.path

# Add the "links" table to the list of tables to select from
FROM links

# Add the "link_cat" table, specify "link_id" as the common field
JOIN link_cat USING (link_id)

# Add the "categories" table specifying the "cat_id" as the common field
JOIN categories USING (cat_id)
SELECT links.id, links.url, links.description, categories.name, categories.path
FROM links
INNER JOIN link_cat ON links.id = link_cat.links_id
INNER JOIN categories ON categories.id = link_cat.category_id

http://sqlfiddle.com/#!9/6a81e/1

SELECT 
  l.id, 
  l.url, 
  l.description,
  c.name,
  c.path
FROM links l
INNER JOIN link_cat lc
ON lc.link_id = l.id
INNER JOIN categories c
ON lc.cat_id = c.id 
SELECT links.id, links.url, links.description, categories.name, categories.path
FROM links
INNER JOIN link_cat     ON link_cat.link_id = links.id
INNER JOIN categories   ON link_cat.cat_id  = categories.id
SELECT link.id, link.url, link.description, categories.name, categories.path
FROM link, categories, link_cat
WHERE
    link.id = link_cat.link_id
    AND categories.id = link_cat.category_id

暫無
暫無

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

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