【问题标题】:How to pull data from two tables?如何从两个表中提取数据?
【发布时间】:2013-07-26 23:35:28
【问题描述】:

考虑一个我有的情况:

CREATE TABLE COMMANDE(
   _ID INTEGER PRIMARY KEY AUTOINCREMENT, 
   login_id INTEGER NOT NULL 
   menu_id INTEGER NOT NULL, 
   FOREIGN KEY(login_id) REFERENCES LOGIN(_ID),
   FOREIGN KEY(menu_id) REFERENCES MENU(_ID)
)

对于这张桌子我可以做到:

// 一阶

INSERT INTO COMMANDE VALUES (0, 0, 0);

// 二阶:

INSERT INTO COMMANDE VALUES (1, 0, 0);

// 三阶:不同的用户

INSERT INTO COMMANDE VALUES (2, 1, 0);

// 第四顺序:不同的菜单项

INSERT INTO COMMANDE VALUES (3, 1, 1);

如何获取特定用户的详细信息?还是特定项目的详细信息?使用SELECT 查询,因为这些表是通过约束链接的......

可以吗?也许有一些INNER JOIN

【问题讨论】:

  • [1] DDL 格式不正确 [2] 您不插入自动增量列值 [4] FK 列值通常不为 0 [3] 没有约束阻止您获取列的数据value - select * from commande where login_id =

标签: sql select insert inner-join


【解决方案1】:
SELECT *
FROM COMMANDE C
LEFT JOIN LOGIN L ON (C.login_id = L._id)
LEFT JOIN MENU M ON (C.menu_id = M._id)
WHERE C.login_id = 1

这样的?

【讨论】:

  • 你不需要LEFT JOIN。这些是外键,因此需要在引用的表中存在匹配的行。
【解决方案2】:

要获取特定用户的详细信息:

SELECT m.*
FROM LOGIN l
JOIN COMMANDE c ON l._id = c.login_id
JOIN MENU m ON m._id = c.menu_id
WHERE l._id = 1

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多