簡體   English   中英

MySQL連接多個表

[英]MySQL Join over multiple tables

我正在嘗試實現動態的META信息,以便它將允許您根據正在查看的頁面插入META信息。

我有3張桌子

CATEGORIES
  category_id,
  category_name,
  category_title,
  category_url,
  site_id,

SITE
  site_id,
  site_name,
  site_url,
  meta_kw,
  meta_desc,

CATEGORY_META
  site_id,
  category_id,
  meta_keywords,
  meta_description,

我正在嘗試運行一個查詢,如果CATEGORY_META表內不存在任何信息,則允許從SITE表填充META信息。 為此,我要查看存在的“ category_url”並從中收集“ category_id”以運行子查詢。 但是,它返回我不想要的空行,並導致錯誤。

我的查詢如下所示:

SELECT category_id, s.meta_kw, s.meta_desc, m.meta_keywords, m.meta_description
FROM cms_sites s
LEFT JOIN cms_category_meta m
ON s.site_id=m.site_id AND m.category_id = 
(SELECT category_id FROM cms_categories WHERE category_url='?')

返回:

 |category_id  |meta_kw  |meta_Desc | meta_keywords  |meta_description  |
 |NULL         |kw       |desc      |NULL            |NULL              |
 |NULL         |         |          |NULL            |NULL              |

我是MySQL的新手,任何幫助將不勝感激。

嘗試這個:

SELECT 
  category_id, s.meta_kw, s.meta_desc, m.meta_keywords, m.meta_description
FROM cms_sites s 
LEFT JOIN cms_category_meta m ON s.site_id = m.site_id 
LEFT JOIN cms_categories cat ON m.category_id = cat.category_id
                            AND cat.category_url = '?'

無論如何,如果您有@jlcd告訴您的“空”行,這將無法解決您的問題。

暫無
暫無

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

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