2013-04-25 150 views
0

我有三个非常简单的查询,我相信可以在一个查询中完成,但我无法弄清楚。下面是查询:将三个查询合并为一个

$idSQL = "SELECT website_id FROM websites WHERE website_url = :webURL LIMIT 1 

$featureSQL = "SELECT feature_id FROM feature_website WHERE website_id = :webID"; 

$sql = "SELECT feature_name, feature_start, feature_end, feature_headline, feature_text, feature_photoHor, feature_photoVert, feature_photoSquare FROM features WHERE feature_id = :featID"; 

这给了我预期的输出:enter image description here

所以,我试图查询组合(可能使用不正确的连接)到这一点:

$sql = "SELECT f.feature_name, f.feature_start, f.feature_end, f.feature_headline, f.feature_text, f.feature_photoHor, f.feature_photoVert, f.feature_photoSquare FROM features LEFT JOIN feature_website fw ON f.feature_id = fw.feature_id LEFT JOIN websites w ON fw.website_id = w.website_id AND w.website_url = :webURL"; 

什么我错过了吗?

+2

加入的查询的结果是什么?错误?没有?重复的行? – 2013-04-25 19:45:11

回答

2

尝试此查询:

$sql = " 
SELECT f.feature_name, f.feature_start, f.feature_end, f.feature_headline, f.feature_text, f.feature_photoHor, f.feature_photoVert, f.feature_photoSquare 
FROM 
    websites w 
     LEFT JOIN feature_website fw ON fw.website_id = w.website_id 
     LEFT JOIN features f ON f.feature_id = fw.feature_id 
WHERE 
    w.website_url = :webURL 
"; 

也许你可以的情况下,使用常规JOIN你不想表现出任何的结果,如果有对你的网站没有的功能。

+1

这个作品非常棒!谢谢! – 2013-04-25 20:25:11