Оставил внешнее соединение с созданной таблицей? - PullRequest
2 голосов
/ 05 января 2012

Я не на том пути?Я хочу сделать левое внешнее соединение с запросом, сгенерированным из 2 таблиц, но я продолжаю получать ошибки.Нужен ли другой подход?

t1:

ID, Surname,Firstname

t2:

ID,JobNo,Confirmed

У меня естьследующий запрос:

SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
       FirstName AS F,Surname AS S 
FROM gigs_players, Players 
WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
      AND (`Confirmed` IS NULL OR Confirmed ='Y' ) 
ORDER BY Instrument,Surname

Я хочу добавить:

LEFT OUTER JOIN contacted (ON t1.StaffID=contact.ID AND t2.JobNo=contact.JobNo)"

Можно ли сделать left outer join для запроса, сгенерированного из 2 таблиц?

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Вот пример левого соединения с подзапросом.Это может быть то, что вы ищете.

select 
parts.id, 
min(inv2.id) as nextFIFOitemid 
from test.parts 
left join 
( select 
  inventory.id, 
  coalesce(parts.id, 1) as partid 
  from test.inventory 
  left join test.parts 
  on (parts.id = inventory.partid) 
) inv2 
on (parts.id = inv2.partid) 
group by parts.id;
0 голосов
/ 05 января 2012

Чтобы использовать t1 и t2 в левом внешнем соединении, которое вы хотите добавить, необходимо объединить их с первыми таблицами, вы не можете ссылаться на них непосредственно в левом внешнем соединении, что-тонапример:

SELECT JobNo AS N, StaffID AS P, Confirmed as C, 
   FirstName AS F,Surname AS S 
FROM gigs_players, Players
Inner join t1 on ...
Inner join t2 on ...
LEFT OUTER JOIN contacted c 
     on t1.StaffID=c.ID AND t2.JobNo = c.JobNo
WHERE t1.StaffID=t2.StaffID AND JobNo="2" 
    AND (`Confirmed` IS NULL OR Confirmed ='Y' ) 
ORDER BY Instrument,Surname

Итак, на основе структуры ваших таблиц задайте условия двух соединений с t1 и t2 с другими таблицами.

...