首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用关系表作为mysql的中介从3个表中获取列数据

问用关系表作为mysql的中介从3个表中获取列数据
EN

Stack Overflow用户
提问于 2013-10-15 05:48:33
回答 3查看 75关注 0票数 0

我也想获取类别名。我有下表

积表

代码语言:javascript
复制
mysql> describe prod;
+----------+-----------------+------+-----+---------+----------------+
| Field    | Type            | Null | Key | Default | Extra          |
+----------+-----------------+------+-----+---------+----------------+
| pid      | int(4) unsigned | NO   | PRI | NULL    | auto_increment |
| pro_name | varchar(32)     | NO   |     | NULL    |                |
+----------+-----------------+------+-----+---------+----------------+

分类表

代码语言:javascript
复制
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表关系表

代码语言:javascript
复制
mysql> describe cat_pro;
+----------+-----------------+------+-----+---------+----------------+
| Field    | Type            | Null | Key | Default | Extra          |
+----------+-----------------+------+-----+---------+----------------+
| cat_id   | int(4) unsigned | NO   |     | NULL    |                |
| pro_id   | int(4) unsigned | NO   |     | NULL    |                |
+----------+-----------------+------+-----+---------+----------------+

我的Current Query:

代码语言:javascript
复制
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

代码语言:javascript
复制
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'

有没有办法,我也可以从表中获取类别名,还是必须运行另一个query从cat表中获取类别名。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-15 05:56:12

查询:

代码语言:javascript
复制
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';

为您提供的db结构工作,没有错误。

票数 1
EN

Stack Overflow用户

发布于 2013-10-15 06:01:27

希望这对你有帮助。在下面的查询中,我们使用子查询来获取基于category_id的类别名称。

代码语言:javascript
复制
 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
EN

Stack Overflow用户

发布于 2013-10-15 06:02:47

试试这个:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19374082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档