2013-10-15 42 views
0

我想獲取類別名稱。我有如下表從3表中獲取列數據與作爲中介者的關係表之間的關係表

產品表

mysql> describe prod; 
+----------+-----------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+----------+-----------------+------+-----+---------+----------------+ 
| pid  | int(4) unsigned | NO | PRI | NULL | auto_increment | 
| pro_name | varchar(32)  | NO |  | NULL |    | 
+----------+-----------------+------+-----+---------+----------------+ 

分類表

mysql> describe cat; 
+----------+-----------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+----------+-----------------+------+-----+---------+----------------+ 
| cid  | int(4) unsigned | NO | PRI | NULL | auto_increment | 
| cat_name | varchar(32)  | NO |  | NULL |    | 
+----------+-----------------+------+-----+---------+----------------+ 

cat_pro表[關係表]

mysql> describe cat_pro; 
+----------+-----------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+----------+-----------------+------+-----+---------+----------------+ 
| cat_id | int(4) unsigned | NO |  | NULL |    | 
| pro_id | int(4) unsigned | NO |  | NULL |    | 
+----------+-----------------+------+-----+---------+----------------+ 

當前Query: -

mysql> select pid, pro_name, cat_pro.cat_id 
     from prod 
     left join cat_pro on cat_pro.pro_id=prod.pid 
     where pid='2'; 

但是當我運行此命令時,它給了我錯誤unknown column cat_pro.cat_id in on clause

mysql> select pid, pro_name, cat_pro.cat_id, cat.cat_name 
     from prod 
     left join cat_pro on cat_pro.pro_id=prod.pid 
     left join cat on cat.cid=cat_pro.cat_id 
     where pid='2' 

有什麼辦法,我可以取類別名稱也從cat桌子? ,還是我必須運行另一個query類別名稱cat表。

感謝

回答

1

查詢:

select pid, pro_name, cat_pro.cat_id, cat.cat_name 
from 
prod 
    inner join 
cat_pro 
    on (cat_pro.pro_id = prod.pid) 
    inner join 
cat 
    on (cat.cid = cat_pro.cat_id) 
where pid='2'; 

作品沒有錯誤爲你提供

+0

哦,我的上帝!你做到了,先生,謝謝:)能在4分鐘內接受這個答案:) –

0

希望這將有助於你的數據庫結構。在下面的查詢中,我們使用子查詢來根據category_id獲取類別名稱。

select 
prod.pid, 
prod.pro_name, 
cat_pro.cat_id, 
(
    select 
     cat_name 
    from 
     Category c 
    where 
     c.cid = cat_pro.cat_id 

) as category_name 

from 
prod left join 
cat_pro on cat_pro.pro_id=prod.pid 
where prod.pid='2'; 
0

試試這個:

SELECT `pid`, `pro_name`, `c`.`cat_id` 
FROM `prod` `p` 
LEFT OUTER JOIN `cat_pro` `c` ON `c`.`pro_id` = `p`.`pid` 
WHERE `p`.`pid` = 2;