簡體   English   中英

SQL用1連接4個表列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM