[英]Mysql query from three tables based on date
我試圖基於用戶在MYSQL中的訂閱開始日期來獲取用戶信息。
這是我到目前為止提出的。
SELECT a.id, a.user_login, a.user_email, c.cardtype, c.accountnumber, a.user_pass, a.user_registered
FROM users a
INNER JOIN memberships_users b
ON b.user_id = a.id
INNER JOIN memberships_order c
ON c.user_id = a.id
WHERE b.status = 'active' AND
(c.cyckle_period = 6 AND
('2016-06-01 00:00:00' < (SELECT c.startdate ORDER BY c.startdate DESC LIMIT 1))
OR
(c.cyckle_period = 1 AND
('2015-12-01 00:00:00' < (SELECT c.startdate ORDER BY c.startdate DESC LIMIT 1));
該查詢給我錯誤消息“您的SQL語法有錯誤;請查看與您的MySQL服務器版本相對應的手冊,以在第8行的'LIMIT 0,30'附近使用正確的語法”。
我在您發布的代碼中看不到任何LIMIT 0, 30
。 您輸入正確的代碼了嗎? 順便說一句,您的下面這部分是完全錯誤的
'2015-12-01 00:00:00' < (SELECT c.startdate ORDER BY c.startdate DESC LIMIT 1)
應該是
'2015-12-01 00:00:00' < SELECT max(startdate) FROM memberships_order
如下更改您的WHERE
部分
WHERE b.status = 'active' AND
c.cyckle_period IN (6, 1) AND
'2015-12-01 00:00:00' < (SELECT max(startdate) FROM memberships_order);
我認為您只是缺少右括號。 根據我的看法,
從用戶中選擇a.id,a.user_login,a.user_email,c.cardtype,c.accountnumber,a.user_pass,a.user_registered。 user_id = a.id WHERE b.status ='active'AND(c.cyckle_period = 6 AND('2016-06-01 00:00:00'<(SELECT c.startdate ORDER BY c.startdate DESC LIMIT 1)) )OR(c.cyckle_period = 1 AND('2015-12-01 00:00:00'<(SELECT c.startdate ORDER BY c.startdate DESC LIMIT 1))));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.