SQL选择何处加入表

时间:2016-10-17 19:27:20

标签: php mysql sql

有没有办法在不运行两个查询的情况下执行选择以执行以下操作?获得" id"的第一个查询如果a列和第二个排队另一个表返回那个" id"匹配?

SELECT `name` 
FROM `attributes` 
INNER JOIN `attribute_vals` 
ON `attributes`.`id`=`attribute_vals`.`attr_id`
WHERE `name`='weight' 

感谢您的回答!

只是我想要实现的快速图形表示!

enter image description here

2 个答案:

答案 0 :(得分:1)

对您的数据库设计做一些假设:

  1. name列位于attributes表中,
  2. attr_id, name组合是唯一的,
  3. val表格中有attribute_vals列。
  4. 听起来你想要一个简单的连接,用属性表中的名称限制值表。

    然后,您可以在单个查询中获取关联的attribute_vals数据。

    SELECT
        `av`.`id`,
        `av`.`attribute_id`,
        `av`.`value`
    FROM `attributes` AS `a`
    INNER JOIN `attribute_vals` AS `av`
        ON `a`.`id`=`av`.`attr_id`
    WHERE `a`.`name`= 'weight'
    

答案 1 :(得分:0)

此查询可获取属性' weight'的所有属性值。这是你想要的吗?

select *
from attribute_vals
where attribute_id in (select id from attributes where name= 'weight');