0

我有 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.idads.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 :我没有得到任何错误,只是不准确。任何帮助都感激不尽。

4

3 回答 3

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

于 2012-09-07T00:28:08.720 回答
1

我不确定到底是什么问题,但我认为您不是在尝试基于一个 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
WHERE ads.id = your_id_here
于 2012-09-07T00:16:57.890 回答
0

试试这个:

SELECT categories.id, ads.id 
FROM ads, adscat, categories
WHERE ads.id=adcat.adid
AND categories.id = adcat.catid
于 2012-09-07T00:15:15.577 回答