【问题标题】:How to get the relations of an item in mysql?如何在mysql中获取项目的关系?
【发布时间】:2014-11-22 17:42:28
【问题描述】:

所以,这是我的数据库:

Item
+---------+-------+
| item_id | name  |
+---------+-------+
|       1 | item1 |
|       2 | item2 |
|       3 | item3 |
|       4 | item4 |
+---------+-------+
Type
+---------+-------+
| type_id | name  |
+---------+-------+
|       1 | type1 |
|       2 | type2 |
|       3 | type3 |
+---------+-------+
Relation
+-----------+-----------+---------+
| a_item_id | b_item_id | type_id |
+-----------+-----------+---------+
|         1 |         2 |       1 |
|         2 |         3 |       1 |
|         1 |         2 |       2 |
|         4 |         1 |       3 |
+-----------+-----------+---------+

我想获取特定项目的关系。 例如SELECT ... WHERE item_id = 1 应该输出:

+-----------+-------------+-----------+-------------+---------+
| a_item_id | a_item_name | b_item_id | b_item_name | type_id |
+-----------+-------------+-----------+-------------+---------+
|         1 | item1       |         2 | item2       |       1 |
|         1 | item1       |         2 | item2       |       2 |
|         4 | item4       |         1 | item1       |       3 |
+-----------+-------------+-----------+-------------+---------+
  • 项目的位置 (a/b) 很重要。
  • 对于相同的 type_id,有 只是两个项目之间的一种关系。 (相反的位置不是 可能)

查询会很好,但如果您知道如何使用 medoo (http://medoo.in/api/select),我将非常感谢它的转换。

【问题讨论】:

    标签: mysql join medoo


    【解决方案1】:

    解决方案比我预期的要容易,该查询需要两个连接 relation 表中的外键。表别名是强制性的,以防止列名不明确。

    SELECT a_item_id, a_item.name AS a_item_name, b_item_id, b_item.name AS b_item_name, type_id
    FROM relation
    INNER JOIN item a_item ON a_item.item_id = a_item_id
    INNER JOIN item b_item ON b_item.item_id = b_item_id
    WHERE a_item_id = 1 OR b_item_id = 1
    

    我没有找到使用 medoo 创建表别名的方法,所以我不得不使用 query 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-20
      • 2011-09-07
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 2023-02-13
      • 1970-01-01
      相关资源
      最近更新 更多