[英]Sql Join 4 table columns with 1
僅當值匹配時才可以與一起使用聯接或進行聯接嗎?
就像我有表GO並為員工提供了4個ID:
equi_func1_mat
equi_func2_mat
equi_func3_mat
equi_func4_mat
而我的employee表只是該用戶的ID
matricula_qt
我正在嘗試做類似的事情
JOIN tb_funcionario func ON go.equi_func1_mat = func.matricula_qt
OR JOIN tb_funcionario func ON go.equi_func2_mat = func.matricula_qt
OR JOIN tb_funcionario func ON go.equi_func3_mat = func.matricula_qt
OR JOIN tb_funcionario func ON go.equi_func4_mat = func.matricula_qt
我也試過這個:
JOIN tb_funcionario func ON go.equi_func1_mat = func.matricula_qt
OR go.equi_func2_mat OR go.equi_func3_mat OR go.equi_func4_mat
僅對一位雇主有效的完整查詢:
SELECT SEC_TO_TIME( SUM(TIME_TO_SEC(temp.tempoexposicao))) AS soma_tudo,
temp.cod_go,
temp.data,
temp.item,
temp.equi_func1_mat
FROM(
SELECT
prog.cod_go,
prog.data,
prog.item,
prog.tempoexposicao,
go.equi_func1_mat
FROM tb_programacao prog
JOIN tb_go go ON go.cod_go = prog.cod_go
JOIN tb_funcionario func ON go.equi_func1_mat = func.matricula_qt
JOIN tb_horario hora ON func.cod = hora.cod_funcionario
WHERE go.cod_go = prog.cod_go
AND prog.data = hora.data
GROUP BY prog.data,prog.item) AS temp
我沒有在mysql文檔或網絡中找到任何幫助,有人知道這是否有可能嗎?
謝謝!
可能是這樣的:
SELECT
prog.cod_go,
prog.data,
prog.item,
SEC_TO_TIME( SUM(TIME_TO_SEC(temp.tempoexposicao))) AS soma_tudo,
CASE
WHEN prog.data = hora1.data
THEN go.equi_func1_mat
WHEN prog.data = hora2.data
THEN go.equi_func2_mat
WHEN prog.data = hora3.data
THEN go.equi_func3_mat
ELSE go.equi_func4_mat
END AS aFunc
FROM tb_programacao prog
JOIN tb_go go ON go.cod_go = prog.cod_go
LEFT OUTER JOIN tb_funcionario func1 ON go.equi_func1_mat = func1.matricula_qt
LEFT OUTER JOIN tb_horario hora1 ON func1.cod = hora1.cod_funcionario
LEFT OUTER JOIN tb_funcionario func2 ON go.equi_func2_mat = func2.matricula_qt
LEFT OUTER JOIN tb_horario hora2 ON func2.cod = hora2.cod_funcionario
LEFT OUTER JOIN tb_funcionario func3 ON go.equi_func3_mat = func3.matricula_qt
LEFT OUTER JOIN tb_horario hora3 ON func3.cod = hora3.cod_funcionario
LEFT OUTER JOIN tb_funcionario func4 ON go.equi_func4_mat = func4.matricula_qt
LEFT OUTER JOIN tb_horario hora4 ON func4.cod = hora4.cod_funcionario
WHERE prog.data = hora1.data
OR prog.data = hora2.data
OR prog.data = hora3.data
OR prog.data = hora4.data
GROUP BY prog.cod_go, prog.data, prog.item, aFunc
請注意,這是未經測試的最佳猜測,因為我不知道表之間的布局和實際關系
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.