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

标签 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;

示例数据

表区

   -------------------------------------------------------------
   |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 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

关于mysql - 许多记录匹配查询,但mysql只显示第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41774688/

相关文章:

php -> MYSQL 查询无法找出问题所在,出现错误 #1064

php - 什么是 PDO,它与 SQL 注入(inject)有什么关系,我为什么要使用它?

sql - oracle sql date不迟于今天

php - 从相互关联的 MySQL 表中获取最大值

sql - PostgreSQL:使用 join 和 group by 查询花费的时间太长

指定列上的 SQL 内连接

MYSQL:仅查找完整字符串,而不查找子集

SQL服务器: Linked-servers without linking servers?

update更新后的mysql触发器

php - 将日期格式(在 DB 或输出中)更改为 dd/mm/yyyy - PHP MySQL