Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sự cố với truy vấn mysql phức tạp bằng cách sử dụng câu lệnh đã chuẩn bị

  • Để bao gồm các biến trong Câu lệnh Chuẩn bị, tôi đã sử dụng nối chuỗi. Truy vấn của bạn sẽ báo lỗi vì STR_TABLE_NAME sẽ được coi là tên bảng và sẽ không tìm thấy bất kỳ tên nào.
  • Xóa (`) backtick khỏi tham số đầu vào.
BEGIN

    DECLARE STR_TABLE_NAME VARCHAR(100) DEFAULT NULL;
    SELECT table_source INTO STR_TABLE_NAME FROM list_repository WHERE id = int_id LIMIT 1;

    DROP TABLE IF EXISTS `loyaltytry`;

    SET @prep_stmt = CONCAT('CREATE TABLE `loyaltytry` AS (
                                        SELECT 
                                            Months AS MONTH, 
                                            Number_of_New_Customers AS `new_customers`, 
                                            `Number_of_Repeat_Customers` AS `repeat_customers`
                                        FROM (
                                            SELECT 
                                                MONTHNAME(Months) AS Months, 
                                                MONTH(Months) AS `Month_number`, 
                                                SUM(CASE WHEN REP_COUNT = "no" THEN cnts END) AS `Number_of_New_Customers`, 
                                                SUM(CASE WHEN REP_COUNT = "yes" THEN cnts END) AS `Number_of_Repeat_Customers`
                                            FROM (
                                                SELECT 
                                                    months,
                                                    REP_COUNT, 
                                                    COUNT(*) AS cnts
                                                FROM (
                                                    SELECT 
                                                        (date_commande_client) AS Months, 
                                                        numero, 
                                                        CASE WHEN cnt > 1 THEN "yes" ELSE "no" END AS REP_COUNT
                                                    FROM (
                                                        SELECT 
                                                            COUNT(*) AS cnt, 
                                                            date_commande_client, 
                                                            numero
                                                        FROM ',  STR_TABLE_NAME , 
                                                        ' WHERE YEAR(date_commande_client) = 2017 
                                                            AND intitule IN (
                                                                SELECT 
                                                                    showroom_name
                                                                FROM `showrooms`
                                                                WHERE id_region= ', int_id , ' 
                                                            )
                                                        GROUP BY date_commande_client, numero
                                                    ) AS tmp
                                                ) AS final
                                                GROUP BY Months, REP_COUNT
                                            ) AS tmp1
                                            GROUP BY MONTHNAME(Months), MONTH(Months)
                                            ORDER BY Month_number) AS finalll
                                        )');

    PREPARE stmt FROM @prep_stmt; 
    EXECUTE stmt; 
    DEALLOCATE PREPARE stmt;

END



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để sử dụng tính năng tăng tự động trong dữ liệu Varchar Loại dữ liệu trong PHP một MYSQL?

  2. Cách tính số ngày giữa hai ngày trong PHP?

  3. GROUP_CONCAT trả về NULL nếu bất kỳ giá trị nào là NULL

  4. Cách lưu trữ thông tin ngoại lệ / lỗi MySQL Trigger vào Bảng hoặc trong Biến

  5. Lỗi kỳ lạ khi cố gắng kết nối với cơ sở dữ liệu