2013-07-26 3 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 заказ: Different Пункт меню

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

Как я могу получить подробную информацию о конкретном пользователе? Или сведения о конкретном элементе? с запросом SELECT, поскольку эти таблицы связаны с ограничением ...

Можно ли это сделать? Может быть, с некоторыми INNER JOIN?

+1

[1] DDL не хорошо сформированы [2] Вы не можете вставить Autoincrement столбцы значения [4] значения столбцов FK не 0, как правило [3] Никакое ограничение не останавливает вас от получения данных для значения куба - выберите * из команды, где 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

@ Бармар Вы правы, но мне это нравится :) –

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 

 Смежные вопросы

  • Нет связанных вопросов^_^