2013-07-26 26 views
0

考虑在那里我有一个案例:如何从两个表中提取数据?

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); 

// Fouth订单:不同的菜单项

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

我怎样才能得到一个特定用户的详细信息?或具体项目的细节?与SELECT查询,因为这些表与约束链接...

可以这样做吗?也许有一些INNER JOIN

+1

[1]所述的DDL未很好地形成[2]不插入自动增量列值[4] FK列值不为0时通常[3]没有约束会阻止您获取coumn值的数据 - select * from commande where login_id =

回答

0
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 

是这样的?

+0

您不需要'LEFT JOIN'。这些是外键,因此需要在引用的表中存在匹配的行。 – Barmar

+0

@Barmar你是对的,但我喜欢它:) –

0

要获得一个特定的用户的细节:

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