[英]SQL JOIN ON issue with aliases or not using aliases
我有三個表,分別稱為“小時數”,“項目”和“客戶”。 我對SQL語句有一定的經驗,似乎無法理解為什么它不起作用。
Projects和Hours表都共享一個稱為projectid的外鍵,而Projects和Clients都共享一個稱為clientid的外鍵。
到目前為止,這是我的查詢:
SELECT hoursworked.h, projectname.p, description.p, archive.p, clientname.c FROM hours AS h, projects AS p, clients AS c JOIN h ON projectid.h = projectid.p JOIN p ON clientid.p = clientid.c WHERE archive.p = 0;
我似乎收到一個錯誤,錯誤代碼為“#1066-不是唯一的表/別名:'h'”
不知道我在哪里錯了。 任何幫助都會很棒。
提前致謝!
您正在混合隱式聯接和顯式聯接。 一個簡單的規則:不要在from
子句中使用逗號。
SELECT h.hoursworked, p.projectname, p.description, p.archive, c.clientname
FROM hours h join
projects p
on h.projectid = p.projectid join
clients c
ON p.clientid = c.clientid
WHERE p.archive = 0;
另外,使用別名的語法是<table alias>
。 <column alias>
,而不是相反。
您需要將表名放在字段/列的前面,而不要放在最后,通常,您將使用AS
作為字段/列的別名,而不是表的別名。 另外,我將在JOIN
命名表,而不在FROM
語句中用逗號分隔。 它應該是這樣的:
SELECT
h.hoursworked,
p.projectname,
p.description,
p.archive,
c.clientname
FROM hours h
JOIN projects p
ON h.projectid = p.projectid
JOIN clients c
ON p.clientid = c.clientid
WHERE p.archive = 0;
您正在反向使用別名。 您需要使用H.HoursWorked,而不是HoursWorked.H等。您的JOIN
也不正確。
請嘗試以下操作:
SELECT h.hoursworked, p.projectname, p.description, p.archive, c.clientname
FROM hours AS h
JOIN projects AS p ON h.projectid = p.projectid
JOIN clients AS c ON p.clientid = c.clientid
WHERE p.archive = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.