我有一个公司和域名的数据库。我的目标是将所有的社交媒体渠道连接到每个国家的领域。
SELECT
yt.screen_name,
tw.screen_name,
gp.id,
fb.title,
dom.domain_name,
dom.type,
dom.url
FROM
domain AS dom1
LEFT JOIN youtube AS yt
ON yt.company_name = dom1.company_name
AND domain AS dom2
LEFT JOIN twitter AS tw
ON tw.company_name = dom2.company_name
AND domain AS dom3
LEFT JOIN googleplus AS gp
ON gp.company_name = dom3.company_name
AND domain AS dom4
LEFT JOIN facebook AS fb
ON fb.company_name = dom4.company_name
WHERE
yt.screen_name IS NOT NULL
OR tw.screen_name IS NOT NULL
OR gp.id IS NOT NULL
OR fb.title IS NOT NULL
ORDER BY dom.url我的目标是得到这样一张桌子:
yt.screen_name | tw.screen_name | gp.id | fb.title | dom.domain_name | dom.type | dom.url
foo NULL NULL NULL foo.com website http://www.foo.com
NULL foo NULL NULL foo.com website http://www.foo.com
NULL NULL 0478174 NULL foo.com website http://www.foo.com这个是可能的吗?
发布于 2015-01-22 15:21:51
尝尝这个
SELECT DISTINCT
yt.screen_name,
tw.screen_name,
gp.id,
fb.title,
dom1.domain_name,
dom1.type,
dom1.url
FROM
domain AS dom1
LEFT JOIN youtube AS yt
ON yt.company_name = dom1.company_name
LEFT JOIN twitter AS tw
ON tw.company_name = dom1.company_name
LEFT JOIN googleplus AS gp
ON gp.company_name = dom1.company_name
LEFT JOIN facebook AS fb
ON fb.company_name = dom1.company_name
WHERE
yt.screen_name IS NOT NULL
OR tw.screen_name IS NOT NULL
OR gp.id IS NOT NULL
OR fb.title IS NOT NULL
ORDER BY dom1.url发布于 2015-01-22 15:21:14
你想做的事似乎是合理的..。我认为这里的问题是,在连接条件中出现了一些语法错误。而不是你所拥有的,试着:
SELECT
yt.screen_name,
tw.screen_name,
gp.id,
fb.title,
dom.domain_name,
dom.type,
dom.url
FROM
domain AS dom
LEFT JOIN youtube AS yt
ON yt.company_name = dom.company_name
LEFT JOIN twitter AS tw
ON tw.company_name = dom.company_name
LEFT JOIN googleplus AS gp
ON gp.company_name = dom.company_name
LEFT JOIN facebook AS fb
ON fb.company_name = dom.company_name
WHERE
yt.screen_name IS NOT NULL
OR tw.screen_name IS NOT NULL
OR gp.id IS NOT NULL
OR fb.title IS NOT NULL
ORDER BY dom.url这里的不同之处在于,我们没有迭代多个版本的dom1、dom2、dom3,而是使用域表(别名为dom)并根据公司名称将所有的公司表连接到dom。
我需要明确指出
LEFT JOIN youtube AS yt
ON yt.company_name = dom1.company_name
AND domain AS dom2不是有效的SQL语法,您还可以引用dom的值(例如dom.domain_name、dom.type等),但实际上没有一个表别名为dom。相反,您将表引用为dom1,然后尝试迭代它。我不是百分之百肯定,但我认为您认为这些dom1、dom2、dom3等可能是对域表中行的引用。如果是这样的话,那是不必要的。您有一个表(域,别名为dom),您希望加入您的公司查找表(youtube,twitter,googleplus,facebook)。你不需要dom1,dom2等。
https://stackoverflow.com/questions/28092103
复制相似问题