簡體   English   中英

基於日期從三個表中查詢MySQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM