【发布时间】:2015-04-29 12:25:48
【问题描述】:
我有两张桌子
订购商品
+--------+------------+------------------+---------+
| item_id| item_name | Item_type | trans |
+--------+------------+------------------+---------+
| 1 | Devon | line_item | 0 |
| 2 | 100 | coupon | 0 |
| 3 | Contin | line_item | 1 |
+--------+------------+------------------+---------+
orderitems_data
1+--------+------------+------------------+-----------+
| id | item_id | Item_key | key_val |
+--------+------------+------------------+------------+
| 1 | 1 | Delivery | 2015/04/03 |
| 2 | 1 | attrib | pick_up |
| 3 | 1 | qty | 1 |
| 4 | 2 | discount | 0 |
| 5 | 3 | Delivery | 2015/04/15 |
| 5 | 3 | attrib | doorstep |
+--------+------------+------------------+------------+
我需要从“orderitems”中选择“item_name”,其中“Item_type = line_item”和“trans=0”,从“orderitems_data”中选择“key_val”,其中“Item_key = Delivery”,以及“key_val”,其中'Item_key=attribute' 用于相同的 'item_name'
然后显示它们。我正在为查询而苦苦挣扎,我想写
SELECT orderitems.item_name AS item_name WHERE orderitems.Item_type='line_item' AND trans=0, orderitems_data.key_val AS deliverydate WHERE Item_key='Delivery', orderitems_data.key_val AS location WHERE Item_key='attrib' FROM orderitems INNER JOIN order_items_data ON orderitems.item_id = orderitems_data.item_id
但显然这是不对的。
有人能指点我正确的方向吗?
我想要得到的结果是
Devon pick_up 2015/04/03
【问题讨论】:
-
能否给出create table命令,我们可以试试。
-
请注意,您的 orderitems_data 表中的 id 是多余的。此外,在使用此类 EAV 模型时,请尽量确保您仍然尊重数据类型。
-
能否提供您想要的结果。
-
这都是很好的信息,谢谢@Strawberry 我没有设计数据库,但我会看看你的 cmets。我正在寻找的结果是选择 Devon pick_up 2015/04/03 再次感谢
-
请用任何其他信息更新您的问题。