如何返回多个LEFT JOIN记录?

时间:2018-07-03 21:00:49

标签: mysql sql pdo

假设我有一个名为package wcs; import dictionaryReader.dicReader; import sourceReader.sourceReader; public class Assigner { private static String source[], snArray[], svArray[], sadvArray[], sadjArray[]; private static String nArray[], vArray[], advArray[], adjArray[]; private static boolean finished = false; public static void sourceAssign() { sourceReader srcRead = new sourceReader(); //dicReader dic = new dicReader(); String[] nArray = dicReader.getnArray(), vArray = dicReader.getvArray(), advArray = dicReader.getAdvArray(), adjArray = dicReader.getAdjArray(); String source[] = srcRead.getSource(); // Noun Store for (int i = 0; i < source.length; i++) { if (source[i] == dicReader.getnArray()[i]) { source[i] = dicReader.getnArray()[i]; }else{ } } // Verb Store // Adverb Store // Adjective Store } 的表,其中包含特定competition_rounds中可用的rounds的所有competition

enter image description here

我想返回此表中所有可用的season,问题是我只知道一个round_id,所以在这种情况下为round_id

如果您查看记录,可以发现本轮比赛与542赛季相关。我还需要返回round_id = 543、544、545。

我没有运气尝试过

1607

但这将多次返回与参数相同的回合通行证...

2 个答案:

答案 0 :(得分:1)

  

假设我有一个名为Competition_rounds的表,其中包含所有   在特定季节进行的比赛回合:

     

我想返回此表中所有可用的round_id,问题是   我只知道一个round_id,所以在这种情况下是542。

假设图像是您的表和数据。
该查询可以解决问题。

SELECT
 competition_rounds.round_id
FROM 
 competition_rounds 
WHERE
 competition_rounds.season_id
IN (    
  SELECT 
   competition_rounds.season_id
  FROM 
   competition_rounds
  WHERE 
   competition_rounds.id = 542
)

答案 1 :(得分:1)

如果我的理解正确,则需要编写一个子查询以使season_id得到id,然后使用 子查询season_id来获取数据。

我有一个问题,为什么要LEFT JOIN competition_seasons表,因为您没有使用表中的任何列。

SELECT r.id
FROM `competition_rounds` r
INNER JOIN(
    SELECT r.season_id season_id 
    FROM competition_rounds r 
    WHERE r.id = 542
) t ON r.season_id = t.season_id
LEFT JOIN competition_seasons s ON s.id = r.season_id