sql >> Database >  >> RDS >> Mysql

MYSQL EN vraag om te voldoen aan dezelfde kolom

Omdat stop_id kunnen niet twee verschillende waarden in dezelfde rij zijn.

Aggregatie is een manier om te doen wat u wilt:

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;

Dit levert bussen op die haltes hebben met de naam van beide steden.

Aangezien bussen veel haltes kunnen hebben, kan het efficiënter zijn om het volgende te doen:

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. PLSQL :NIEUW en :OUD

  2. Een willekeurige en unieke reeks van 8 tekens genereren met MySQL

  3. Splits IPv4-adres in 4 cijfers in Oracle sql

  4. Validatie mislukt voor query voor methode JPQL