Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih MySQL dengan logika bersyarat

SELECT days.meta_value
FROM tableName AS from_country,
     tableName AS to_country,
     tableName AS days
WHERE from_country.item_id = to_country.item_id
  AND from_country.item_id = days.item_id
  AND from_country.field_id = 90
  AND to_country.field_id = 93
  AND days.field_id = 251

Anda dapat menambahkan lebih banyak batasan jika Anda ingin memfilter berdasarkan from_country.meta_value atau serupa. Dan Anda harus mengganti tableName dengan nama sebenarnya dari tabel.

Pikirkan from_country , to_country dan days sebagai tiga pointer berbeda ke baris di tabel Anda, atau variabel lain yang mengambil nilai dari relasi Anda. Anda ingin ketiganya mendeskripsikan item yang sama, dan Anda juga ingin masing-masing merujuk ke bidang yang terkait dengan namanya. Ini menghasilkan kondisi yang disebutkan di atas.

Anda bahkan dapat membuat tampilan, untuk mengakses tabel yang dirancang dengan buruk ini seperti tabel yang dirancang dengan benar:

CREATE VIEW viewName AS
SELECT item.item_id AS item_id,
       from_country.meta_value AS from_country,
       to_country.meta_value AS to_country,
       days.meta_value AS days
FROM (SELECT DISTINCT item_id FROM tableName) AS item
     LEFT JOIN tableName AS from_country
            ON (from_country.item_id = item.item_id AND
                from_country.field_id = 90)
     LEFT JOIN tableName AS to_country
            ON (to_country.item_id = item.item_id AND
                to_country.field_id = 93)
     LEFT JOIN tableName AS days
            ON (days.item_id = item.item_id AND
                days.field_id = 251)

Ini akan membuat tampilan dengan empat kolom, dari mana Anda cukup memilih:

SELECT days FROM viewName WHERE from_country LIKE 'A%'

atau apa pun yang ingin Anda pilih. Perhatikan bahwa karena gabungan kiri, nilai yang hilang untuk beberapa item akan menghasilkan NULL nilai-nilai. Ini berbeda dengan kueri di atas, yang akan menghilangkan item apa pun yang tidak memiliki ketiga nilai yang ditentukan. Gunakan apa pun yang lebih sesuai dengan situasi Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL memeriksa apakah dua rentang tanggal tumpang tindih dengan input

  2. MySQL JOIN untuk mengganti ID dengan nilai dari tabel lain

  3. Cara membangun Rest API dengan Spring Boot menggunakan MySQL dan JPA

  4. Bagaimana cara mendapatkan hitungan setiap nilai berbeda dalam kolom?

  5. Python pandas to_sql 'tambahkan'