我有许多匹配此查询的记录,但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
答案 0 :(得分:0)
您当前的查询实际上返回了两条记录:Camp Outremont
和Camp 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