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.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 :正確な値ではなく、エラーは発生しません。どんな助けでも大歓迎です。

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基本的にニックネームのような列に名前が付けられます。これは多くの場合に便利ですが、2つの列の名前が同じであるため、この場合は特に重要です。これ$row['id']で、categories.id を呼び出して取得できます

于 2012-09-07T00:28:08.720 に答える
1

質問が正確に何であるかはわかりませんが、もしそうなら、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 に答える