1
我正在开发一个彩票应用程序,并且我想检查用户门票上的任何数字是否与已绘制的任何球匹配,每场比赛2分。到目前为止,我有以下查询:SQL UNION奇怪的错误
SELECT firstName, SUM(points) AS totalPoints FROM (
(SELECT userID, firstName, 2 * COUNT(*) AS points
FROM DRAWS NATURAL JOIN TICKETS NATURAL JOIN USERS
WHERE
number1 = ball1 OR
number1 = ball2 OR
number1 = ball3 OR
number1 = ball4
GROUP BY userID, drawID) AS N1
UNION ALL
(SELECT userID, firstName, 2 * COUNT(*) AS points
FROM DRAWS NATURAL JOIN TICKETS NATURAL JOIN USERS
WHERE
number2 = ball1 OR
number2 = ball2 OR
number2 = ball3 OR
number2 = ball4
GROUP BY userID, drawID) AS N2
UNION ALL
(SELECT userID, firstName, 2 * COUNT(*) AS points
FROM DRAWS NATURAL JOIN TICKETS NATURAL JOIN USERS
WHERE
number3 = ball1 OR
number3 = ball2 OR
number3 = ball3 OR
number3 = ball4
GROUP BY userID, drawID) AS N3) AS TOT
GROUP BY userID;
MySQL表示:文件 1064 - 你有一个错误的SQL语法;检查对应于你的MySQL服务器版本 'AS N2 UNION ALL (SELECT用户ID,名字,2 * COUNT(*)AS点 FROM DRA' 18行
使用附近的正确语法手册结构表如下:。
CREATE TABLE USERS (
userID INTEGER PRIMARY KEY,
firstName CHAR(16),
lastName CHAR(16),
email CHAR(32) UNIQUE,
phone CHAR(16),
userName CHAR(20),
passWord CHAR(20),
balance INTEGER);
CREATE TABLE TICKETS (
ticketID INTEGER PRIMARY KEY,
userID INTEGER,
drawID INTEGER,
date DATE,
number1 INTEGER,
number2 INTEGER,
number3 INTEGER,
score INTEGER,
prize INTEGER);
CREATE TABLE DRAWS (
drawID INTEGER PRIMARY KEY,
dateOpen DATE,
dateClose DATE,
gameID INTEGER,
ball1 INTEGER,
ball2 INTEGER,
ball3 INTEGER,
ball4 INTEGER,
bonusBall INTEGER,
dateDrawn DATE,
profit INTEGER,
charityID INTEGER);
我认为它与我的工会问题,因为各个查询做工精细我一直在试图解决这了一会儿,我不能这样做,以便我以为我会问专业人士。有什么建议吗?
您好感谢它的工作就像一个魅力!我喜欢你! – Adam 2011-02-27 13:07:11