许多记录匹配查询,但mysql只显示第一个

时间:2017-01-21 01:00:36

标签: mysql sql join

我有许多匹配此查询的记录,但mysql只显示第一个。我该怎么办才能修复它? 我正在尝试使用此SQL查询连接三个表:

SELECT IDcampJour, NomCamp, PrixCamp, Activite.NomActivite, Arrondissement.NomArrondis
FROM CampJour 
JOIN Arrondissement
ON CampJour.IDcampJour = Arrondissement.IDarrondiss
JOIN Activite 
ON CampJour.IDcampJour = Activite.IDactivite 
WHERE  CampJour.Activiteid = 3;

示例数据

Table Arrondissement

   -------------------------------------------------------------
   |IDarrondiss |                 NomArrondis                  |
   |----------- | ---------------------------------------------|
   |     1      |               Ahuntsic-Cartierville          |
   |     2      |                       Anjou                  |
   |     3      |       Côte-des-Neiges–Notre-Dame-de-Grâce    |
   |     4      |                      Lachine                 |
   |     5      |                      LaSalle                 |
   |     6      |           L’Île-Bizard–Sainte-Geneviève      |
   |     7      |           Mercier–Hochelaga-Maisonneuve      |
   |     8      |                   Montréal-Nord              |
   |     9      |                     Outremont                |
   |    10      |                 Pierrefonds-Roxboro          |
   |    11      |                Le Plateau-Mont-Royal         |
   |    12      |      Rivière-des-Prairies–Pointe-aux-Trembles|
   |    13      |            Rosemont–La Petite-Patrie         |
   |    14      |                   Saint-Laurent              |
   |    15      |                   Saint-Léonard              |
   |    16      |                   Le Sud-Ouest               |
   |    17      |                      Verdun                  |
   |    18      |                    Ville-Marie               |
   |    19      |     Villeray–Saint-Michel–Parc-Extension     |
   ------------------------------------------------------------- 

表格活动

----------------------------
|IDactivite|  NomActivite  |
----------------------------
|     1    |     Hokey     |
|     2    |    Football   | 
|     3    |   Basketball  |
|     4    |     Soccer    |
----------------------------

表CampJour

-----------------------------------------------------------------------------------------------------------------------------------------------------------
|IDcampJour|   NomCamp       |      AdresseCamp       |    SiteWebCamp    |        DecriptionCamp      | PrixCamp |  Arrondissid | GroupAgeid | Activiteid|
-----------------------------------------------------------------------------------------------------------------------------------------------------------
|     1    | Camp de Verdum  |   0000 Rue de Verdum   |   www.google.com  |      Lorem ipsum dolor...  |    10    |      17      |      1     |     1     |     
|     2    |  Camp Outremont |   0000 Rue Outremont   |   www.google.com  |      Lorem ipsum dolor...  |    25    |      9       |      3     |     3     |
|     3    | Camp Outremont3 |   0300 Rue Outremont   |   www.google.com  |      Lorem ipsum dolor...  |    25    |      9       |      3     |     3     |
|     4    |   Camp Lachine  |    0000 Rue Lachine    |   www.google.com  |      Lorem ipsum dolor...  |    10    |      4       |      4     |     4     |
|     5    | Camp La Salle 2 |   1000 Rue La Salle    |   www.google.com  |      Lorem ipsum dolor...  |    5     |      5       |      2     |     2     |
|     6    | Camp La Salle 3 |   1100 Rue La Salle    |   www.google.com  |      Lorem ipsum dolor...  |   10     |      5       |      1     |     3     |
|     7    | Camp Outremont2 |   1000 Rue Outremont   |   www.google.com  |      Lorem ipsum dolor...  |    5     |      9       |      4     |     4     |
|     8    |Camp de La Salle |  0000 Rue de La Salle  |   www.google.com  |      Lorem ipsum dolor...  |    5     |      5       |      2     |     2     |
-----------------------------------------------------------------------------------------------------------------------------------------------------------

期望的结果

所有拥有IDactivite = 3的营地;如下:

NomCamp            PrixCamp     Activite      Arrondissement     
Camp Outremont       25        Basketball       Outremont
Camp Outremont3      25        Basketball       Outremont
Camp La Salle 3      10        Basketball        LaSalle 

1 个答案:

答案 0 :(得分:0)

您当前的查询实际上返回了两条记录:Camp OutremontCamp Outremont3,如下所示:http://sqlfiddle.com/#!9/26fead/1/0

您当前的查询中有两个错误。第一个是:

JOIN Arrondissement
ON CampJour.IDcampJour = Arrondissement.IDarrondiss

应该是

JOIN Arrondissement
ON CampJour.Arrondissid = Arrondissement.IDarrondiss

因为CampJour.Arrondissid的值与您的示例数据匹配Arrondissement.IDarrondiss

第二个错误如下:

JOIN Activite 
ON CampJour.IDcampJour = Activite.IDactivite

应该是

JOIN Activite 
ON CampJour.Activiteid = Activite.IDactivite

因为CampJour.Activiteid的值与您的示例数据匹配Activite.IDactivite

您的SQL查询应如下所示

SELECT IDcampJour, NomCamp, PrixCamp, Activite.NomActivite, Arrondissement.NomArrondis
FROM CampJour 
JOIN Arrondissement
ON CampJour.Arrondissid = Arrondissement.IDarrondiss
JOIN Activite 
ON CampJour.Activiteid = Activite.IDactivite 
WHERE  CampJour.Activiteid = 3;

它会显示您想要的结果,请参阅此处的演示:http://sqlfiddle.com/#!9/26fead/3