sql >> Database teknologi >  >> RDS >> Mysql

SQL/doktrin-forespørgsel til at finde data med flere tilstande med mange til mange-tilknytninger

For at få de virksomheder, der findes i begge kategorier, skriver du din forespørgselsbygger som følger, jeg antager, at dine enheder er kortlagt med rigtig mange til mange relationer

$repo = $this->getDoctrine()->getRepository('YourBundle:Business');

$repo = $this->createQueryBuilder('b')
    ->addSelect('COUNT(DISTINCT  c.id) AS total_categories')
    ->innerJoin('b.categories', 'c');

$categoryIds = array(1,2);

$repo->add('where', $qb->expr()->in('c', $categoryIds))
    ->groupBy('b.id')
    ->having('total_categories = '.count($categoryIds))
    ->getQuery()
    ->getResult();

For reference se et andet svar her



  1. Hvad er makroer, og hvordan bruger jeg dem?

  2. Valg af en enkelt række i MySQL

  3. Hvordan opdager man forespørgsel, der holder låsen i Postgres?

  4. Mysql Inkrementerende variabel ydeevne