sql >> Database >  >> RDS >> Mysql

SQL Volledige rij ophalen op basis van minimumwaarde van berekende kolom

De onderstaande query werkt, maar het is beter om te overwegen de kolomstatus te vervangen door status_code met de code, en hebben een aparte tabel status(status_code,description) {denormaliseren}

En indexeren (term_id,statUs_code ).

hierdoor kunnen we gewoon zelf meedoen. Maak in plaats daarvan een weergave zoals deze.

SELECT * FROM
(SELECT *,(CASE sample.status
                         WHEN 'Arrived' THEN 1
                         WHEN 'Active' THEN 2
                         WHEN 'Pending Approval' THEN 3
                         WHEN 'Pending Confirmation' THEN 4
                         WHEN 'Pending Manual' THEN 5
                         WHEN 'Denied' THEN 6
                         WHEN 'Canceled' THEN 7
                END) AS status_code FROM SAMPLE
  WHERE sample.term_id = 29
) my_view1,
(SELECT BED_ID,MIN(CASE sample.status
                         WHEN 'Arrived' THEN 1
                         WHEN 'Active' THEN 2
                         WHEN 'Pending Approval' THEN 3
                         WHEN 'Pending Confirmation' THEN 4
                         WHEN 'Pending Manual' THEN 5
                         WHEN 'Denied' THEN 6
                         WHEN 'Canceled' THEN 7
                END) AS status_code FROM SAMPLE
 WHERE sample.term_id = 29
 GROUP BY BED_ID
) my_view2
WHERE my_view1.bed_id = my_view2.bed_id
 AND  my_view1.status_code = my_view2.status_code



  1. PostgresSQL-installatie mislukt:initialisatie van databasecluster mislukt MAC os

  2. Fout:de methode of bewerking is niet geïmplementeerd. tijdens het steigeren van MYSQL-database

  3. Hoe WooCommerce-coupons worden opgeslagen in de database?

  4. Gegevensvisualisatie met Apache Zeppelin - Zelfstudie