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

MYSQL DAN kueri untuk memuaskan pada kolom yang sama

Karena stop_id tidak boleh dua nilai berbeda pada baris yang sama.

Agregasi adalah salah satu cara untuk melakukan apa yang Anda inginkan:

SELECT b.bus_name
FROM buses b JOIN
     route_connect rc
     ON rc.busid = b.id JOIN
     stops s
     ON s.id = rc.stop_id
GROUP BY b.bus_name
HAVING SUM( s.stop_name = 'Sydney' ) > 0 AND
       SUM( s.stop_name = 'Melbourne' ) > 0;

Ini mengembalikan bus yang berhenti dengan nama kedua kota.

Mengingat bus dapat memiliki banyak pemberhentian, mungkin lebih efisien untuk dilakukan:

SELECT b.bus_name
FROM buses b JOIN
     route_connect rc
     ON rc.busid = b.id JOIN
     stops s
     ON s.id = rc.stop_id
WHERE s.stop_name in ('Sydney', 'Melbourne')
GROUP BY b.bus_name
HAVING COUNT(DISTINCT s.stop_name) = 2;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Database - Merancang Tabel Acara

  2. MySQL memeriksa apakah dua rentang tanggal tumpang tindih dengan input

  3. Bagaimana saya bisa mencari (tidak peka huruf besar/kecil) di kolom menggunakan wildcard LIKE?

  4. varchar(255) vs tinytext/tinyblob dan varchar(65535) vs gumpalan/teks

  5. meta_query, bagaimana cara mencari menggunakan relasi OR &AND?