So erhalten Sie verwandte Zeilen zwischen zwei Tabellen
P粉976737101
P粉976737101 2023-09-14 23:53:48
0
2
622

Mein Formular:

表格1
练习

| primaryMuscleGroup | motionName           |
| ------------------ | -------------- ------|
| 胸部               | 双杠臂屈伸           |
| 胸部               | 卧推                 |
| 胸部               | 俯卧撑               |
| 胸部               | 飞鸟                 |
| 腿部               | 深蹲                 |
| 腿部               | 弓步                 |
| 背部               | 硬拉                 |

表格2
健身记录

| name               | motionName           |
| ------------------ | -------------- ------|
| 约翰·史密斯         | 双杠臂屈伸           |
| 莎莉               | 深蹲                 |
| 华莱士             | 弓步                 |
| 克里斯托夫         | 硬拉                 |

Die Abfrage sollte alle Übungen für Muskelgruppen zurückgeben, die eine Person nicht gemacht hat. Wenn wir beispielsweise die Abfrage für den Kunden „John Smith“ ausführen, sollten wir Folgendes zurückgeben:

| primaryMuscleGroup | motionName           |
| 腿部               | 深蹲                 |
| 腿部               | 弓步                 |
| 背部               | 硬拉                 |

Wenn wir die Abfrage für den Kunden „Sally“ ausführen, sollten wir Folgendes zurückgeben:

| primaryMuscleGroup | motionName           |
| ------------------ | -------------- ------|
| 胸部               | 双杠臂屈伸           |
| 胸部               | 卧推                 |
| 胸部               | 俯卧撑               |
| 胸部               | 飞鸟                 |
| 背部               | 硬拉                 |

P粉976737101
P粉976737101

Antworte allen(2)
P粉642919823

您可以使用外连接或者使用not exists来实现,看看下面的查询是否符合您的需求:

select * 
from exercises e
where not exists (
  select * from exercises x 
    where exists (
      select * from fitnessRecords fr
      where fr.name = 'john smith' and fr.motionName = x.motionName
    ) and x.primaryMuscleGroup = e.primaryMuscleGroup
)
P粉388945432
SELECT *
FROM excercises t1
WHERE NOT EXISTS ( SELECT NULL 
                   FROM fitnessRecords t2
                   JOIN excercises t3 USING (motionName)
                   WHERE t2.name = '给定的名字'
                     AND t1.primaryMuscleGroup = t3.primaryMuscleGroup )

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=eb216b7579d5fcd0c0ab628717f3d676

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage