我有很多记录匹配这个查询但是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;
示例数据
表区
-------------------------------------------------------------
|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 |
----------------------------
表营会
-----------------------------------------------------------------------------------------------------------------------------------------------------------
|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
最佳答案
您当前的查询实际上返回了两条记录: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
关于mysql - 许多记录匹配查询,但mysql只显示第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41774688/