我有3个表,如下所述,
table1 'ads'
id userid
1 47
2 47 //ads.id = adcat.adid
3 45
4 47
table2 'adcat'
adid catid
1 1
2 3
3 3 // adcat.catid = categories.id
4 3
table3 'categories'
id name
1 mathematic
2 biolog
3 leteratur
4 chemi
我想要的是从categories.id
获取ads.id
。
我试过这个
SELECT categories.id, ads.id
FROM ads
INNER JOIN adcat ON ads.id = adcat.adid
INNER JOIN categories ON categories.id = adcat.catid
但它没有确切的价值。
obs:我没有得到任何错误,只是没有确切的价值。 任何帮助将不胜感激。
答案 0 :(得分:2)
如果adcat.catid = categories.id,这似乎没有理由进入类别表,这是您需要的唯一值。
SELECT ads.id,adcat.catid
FROM ads
INNER JOIN adcat
ON ads.id=adcat.adid
对此查询使用$row['catid']
。
如果您将来需要更多类别列,则需要双重加入:
SELECT categories.id *AS id*,ads.id *AS ads_id*
FROM ads
INNER JOIN adcat ON ads.id = adcat.adid
INNER JOIN categories ON categories.id = adcat.catid
对此查询使用$row['id']
。
请参阅*AS id*
和*AS ads_id*
- 删除星标,并为列添加ALIAS
,这基本上就像一个昵称,这在许多情况下都很方便,但在此方面尤为重要因为两列都具有相同的名称。所以现在你可以调用$row['id']
并获取categories.id
答案 1 :(得分:1)
我不确定究竟是什么问题,但我认为你试图在一个广告基础上排除一行而不是单行。如果是这样的话:
SELECT categories.id ,ads.id
FROM ads
INNER JOIN adcat ON ads.id = adcat.adid
INNER JOIN categories ON categories.id = adcat.catid
WHERE ads.id = your_id_here
答案 2 :(得分:0)
试试这个:
SELECT categories.id, ads.id
FROM ads, adscat, categories
WHERE ads.id=adcat.adid
AND categories.id = adcat.catid