SQL注册和排序查询问题


Branch (branch_ID, name, address_street, address_district)
Foreign key: None
• Instructor (instructor_ID, name, year_of_experience)
Foreign key: None
• Class (class_ID, name, description, date, capacity, branch_ID, instructor_ID)
Foreign key: 
{branch_ID} referencing Branch.branch_ID
{instructor_ID} referencing Instructor.instructor_ID
• Member (member_ID, name, date_of_birth, referrer_ID) 
{referrer_ID} referencing Member.member_ID

注:一个成员可以不由任何其他成员推荐,也可以最多由一个其他成员推荐。成员可以参考健身公司的许多其他成员。

• Enrollment (member_ID, class_ID)
Foreign key:
{member_ID} referencing Member.member_ID
{class_ID} referencing Class.class_ID

显示成员ID和在某个班级注册的成员的姓名名称为"水上健美操"。•请按成员ID 的降序对记录进行排序

我使用了以下查询,但它不起作用。当我稍后去显示它时,我会收到空白。

$query = "SELECT Member.member_ID,Member.name FROM Member WHERE Member.member_ID in (SELECT e.member_ID FROM Enrollment e WHERE e.class_ID IN (SELECT c.class_ID FROM Class c WHERE c.name='Water Aerobics%')) ORDER BY member_ID DESC";

我陷入了困境,如果你能帮忙,我将不胜感激。感谢

不要使用IN(),而是使用联接。在这里,我们可以使用inner join将一个表的行与另一个表匹配,以形成从成员到类的关系

SELECT
m.member_ID
, m.name
FROM Member m
INNER JOIN Enrollment e ON m.member_ID = e.member_ID
INNER JOIN Class c ON e.class_ID = c.class_ID
WHERE c.name = 'Water Aerobics'
ORDER BY m.member_ID DESC

注:当字符串使用equals时,不要包括%符号。如果您想要以"开始的任何结果;水上有氧运动;则可以使用CCD_ 3,并且这将发现(例如(";水上有氧运动1级"水上有氧运动2级;

最新更新