【发布时间】:2024-08-06 03:05:02
【问题描述】:
您好,谁能看到这个查询失败的原因?
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
在第一个中,我不想要“ads”表中的所有列,查询只返回 ...FROM ads A 之前的列。
【问题讨论】:
-
它是如何失败的?我猜这些只是示例,因为连接似乎已经过时了。
-
失败是什么意思?它给出了一个错误?或者您期待未返回的列?如果是,哪些列和哪些表?
-
@Martin Smith,在第一个 FROM 广告 A 中,它没有选择连接的列
-
@Boddy 你说的过时是什么意思?
-
@jartaud 除非您将它们放在选择列表中,否则不会(请参阅 VolkerK 的答案)。它们目前(几乎)已过时,因为您没有从中选择任何内容,尽管连接可能会影响返回的行。
标签: php mysql pdo left-join inner-join