2015-02-14 2 views
-1
TableA: 
+------+------+---------+ 
| A_Id | B_Id | AValue | 
+------+------+---------+ 

TableB: 
+------+------+------+ 
| B_Id | A_Id | C_Id | 
+------+------+------+ 

TableC: 
+------+------+------+---------+ 
| C_Id | B_Id | D_Id | CValue | 
+------+------+------+---------+ 

TableD: 
+------+---------+ 
| D_Id | DValue | 
+------+---------+ 

SELECT AValue, CValue, Dvalue 
FROM TableA 
inner JOIN TableB 
    ON TableA.A_Id = TableB.A_Id 
inner JOIN TableC 
    ON TableB.B_Id=TableC.B_Id; 
inner JOIN TableD 
    ON TableC.D_Id=TableD.D_Id; 

Однако это не дает колонку DValue, которая мне нужна, но только столбцы AValue и CValue. Мне нужны все три столбца. Как мне это сделать?Внутренние соединения нескольких таблиц

+2

Ваш запрос выглядит нормально. – Jens

+0

Почему у 'TableB' есть' C_Id' и 'TableC' есть' D_Id'? Это кажется неправильным. –

+0

Вы уверены, что есть только один «DValue», а не какой-то неоднозначный другой столбец с именем? – Drifter

ответ

0

В ваших столбцах есть что-то нелогичное. TableC и TableB содержат 3 ключа отображения ... Хотя я не знаю, что они представляют, некоторые из них не отображаются, возможно, вы хотите попробовать

SELECT AValue, CValue, Dvalue 
FROM TableA 
inner JOIN TableB using(B_Id) 
inner JOIN TableC using(C_Id) 
inner JOIN TableD using(D_Id) 
+0

@BobJarvis Перечитайте запрос OP, и вы заметите, что C_Id никогда не используется. –

+0

@ JeanFrançoisSavard - Я не уверен, что это действительно важно (хотя запрос OP * может быть неверным). Основываясь на запросе OP, кажется, что A и B являются «один ко многим», B и C являются «один ко многим», а D и C являются «один ко многим» (то есть одна строка в D связана со многими строками в С). C_ID не используется в этих отношениях. Но у меня все еще не было моего кофе (но твари в сарае питаются, Богом!), И поэтому я, возможно, еще не думаю прямо. :-) –

+0

@BobJarvis Я согласен, однако я просто пытаюсь показать OP другой запрос, который также будет работать. Поскольку его первоначальный запрос казался мне в порядке. Во всяком случае, давайте просто подождем и посмотрим, дает ли OP какая-либо обратная связь, пока мы пьем наш кофе :) –

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