0

我不想让互联网上的人检查一个相当简单的 MySQL 视图的语法,但我无法弄清楚语法有什么问题。我已经尝试了我能想到的一切,但我一直收到 1064 错误,没有具体的错误消息。tblProjectClient 表具有 tblClient 和 tblProject 的外键。此视图的目的是获取客户的完整列表,并有一列显示他们当前与他们关联的项目数量。如果我不使用 UNION 部分,当没有 ProjectClient 记录时,我会得到一个空列表。有没有人有任何想法?干杯。

CREATE VIEW viewClientList AS (
select
  tblClient.strName      AS 'Name',
  (select
     count(*)
   from tblProjectClient
   where (tblProjectClient.intClientID = tblClient.intClientID)) AS 'Projects',
  tblClient.intClientID AS 'ID'
from (tblClient
   join tblProjectClient)) 
   union select 
tblClient.strName as 'Name',
   '0' as 'Projects',
   tblClient.intClientID as 'ID'
   from tblClient
   where (not(tblClient.intClientID 
   in(select intClientID as 'ID' from tblClient JOIN tblProjectClient)));
4

2 回答 2

0

用 ` not ' 转义列名。

于 2012-10-27T14:09:23.377 回答
0

感谢您的帮助,但我找到了一个更简单的解决方案。对于其他想要做类似事情的人来说,这里是查询:

CREATE VIEW viewClientList AS (
SELECT
tblClient.strName      AS 'Name',
COUNT(tblProjectClient.intProjectID) AS 'Projects',
tblClient.intClientID AS 'ID'
FROM tblClient LEFT JOIN tblProjectClient ON tblClient.intClientID = tblProjectClient.intClientID);
于 2012-10-28T01:06:04.877 回答