php - MySQL 连接多个表

标签 php mysql left-join

我正在尝试实现动态 META 信息,以便它允许根据您正在查看的页面插入 META 信息。

我有3张 table

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 告诉您的那样,这不会解决您的问题。

关于php - MySQL 连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135540/

相关文章:

php - 在 PHP 中将百分比值转换为十进制值

php - 404 page not found 您请求的页面在 codeigniter 中找不到

php - PHP 中的 Facebook api 墙贴

php - 在 MySQL 中进行多个不同的动态查询

javascript - 使用 AJAX 和 jQuery 在 div 内调用 php 页面(也有循环)

php - 左连接只返回一行

mysql - 在 JOIN 上获取 SQL 查询的唯一/不同结果

使用命名空间时,PHP spl_autoload_register 无法加载具有 require 范围的类

php - 警告 : in_array() [function. in-array]:第二个参数的数据类型错误

mysql - SQL SELECT 结合 JOINS 和 CONTACTS 在一个选定字段中生成相同数据的多个条目