2010-07-31 124 views
0

你好,任何人都可以看到为什么这个查询失败?帮助加入查询(MySQL)

SELECT A.idAd, A.ads_in_Cat, A.title, A.currency, A.price, 
A.in_dpt, A.description, A.featured FROM ads A 
LEFT JOIN featured F ON F.ad = A.idAd 
INNER JOIN dept D ON D.id_dept = A.in_dpt 
INNER JOIN sub_cat_ad S ON S.id_sub_cat = A.ads_in_Cat 
INNER JOIN cat_ad C ON C.idCat_ad = S.from_cat_ad 
ORDER BY A.featured DESC LIMIT :limit, :offset 

但是这一个工程:

SELECT *FROM ads 
LEFT JOIN featured ON featured.ad = ads.idAd 
INNER JOIN dept ON dept.id_dept = ads.in_dpt 
INNER JOIN sub_cat_ad ON id_sub_cat = ads.ads_in_Cat 
INNER JOIN cat_ad ON idCat_ad = sub_cat_ad.from_cat_ad 
ORDER BY featured DESC LIMIT :limit, :offset 

在第一个,我不想从表中“广告”的所有列,查询将返回唯一列,直到... FROM广告A.

+0

它怎么会失败呢?我想这只是一些例子,因为这些连接似乎已经过时了。 – Bobby 2010-07-31 22:12:09

+1

你是什么意思失败?它给出了一个错误?或者你期待那些没有被返回的列?如果是这样的列和哪些表? – 2010-07-31 22:12:24

+0

@马丁史密斯,在第一个,从广告A,它不选择加入列 – jartaud 2010-07-31 22:17:35

回答

1

如果指定只能选择从A那就是你的字段:如果你想从其他表中的字段也必须符合规范从A
只有场如果他们也是。

SELECT 
    A.idAd, A.ads_in_Cat, A.title, A.currency, A.price, A.in_dpt, A.description, A.featured, 
    F.*, 
    D.*, 
    S.*, 
    C.* 
FROM ads A 
LEFT JOIN featured F ON F.ad = A.idAd 
INNER JOIN dept D ON D.id_dept = A.in_dpt 
INNER JOIN sub_cat_ad S ON S.id_sub_cat = A.ads_in_Cat 
INNER JOIN cat_ad C ON C.idCat_ad = S.from_cat_ad 
ORDER BY A.featured DESC LIMIT :limit, :offset 
+0

谢谢!有用。 – jartaud 2010-07-31 22:24:39