У меня есть 3 таблицы t1, t2 и t3. Ниже приведены их схемы.MySQL select query
Мне нужно присоединиться к ним и иметь условие.
In t1 table, objectName can be one of 4: 'ABC', 'DEF', 'GHI', or 'JKL'.
If t1.objectName is 'ABC', I need to join t1.idObject with t2.id1.
If t1.objectName is 'DEF', I need to join t1.idObject with with t2.id2.
If t1.objectName is 'GHI', I need to join t1.idObject with t2.id3.
If t1.objectName is 'JKL', I need to join t1.idObject with t3.id4.
I need to select t1.idObject, t1.objectName, t2.custName, t4.Message.
Кроме того, если t1.objectName является «DEF» или «ГХИ», я хочу custName быть нулевым в результате выбора.
-
create table t1 (idObject int, objectName varchar(20));
create table t2 (id1 int, id2 int, id3 int, custName varchar(20));
create table t3 (id4 int, Message varchar(20));
select * from t1;
select * from t2;
select * from t3;
insert into t1 values (101, 'ABC'), (102, 'DEF'), (103, 'GHI'), (104, 'JKL'), (105, 'ABC'), (106, 'DEF'), (107, 'GHI'), (108, 'JKL');
insert into t2 values (101, 102, 103, 'Val'), (105, 106, 107, 'Mil');
insert into t3 values (104, 'Message1'), (108, 'Messgage2');
-
запрос с объяснением будет высоко оценен.
спасибо.
вы можете использовать * Case * Синтаксис: http://dev.mysql.com/doc/refman/5.0/en /case.html –
Вы хотите выбрать 't4.Message'? Нет таблицы 't4', поэтому, я думаю, вы имеете в виду' t3'. Но вы присоединяетесь только к 't3', когда' objectName' является 'JKL', что это должно быть иначе? – Barmar
Любая таблица с тремя разными столбцами идентичности для объединения представляет собой плохой дизайн. – MatBailie