Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie Sql/Doctrine w celu znalezienia danych o wielu warunkach z asocjacjami Wiele do Wielu

Aby uzyskać firmy, które istnieją w obu kategoriach, napisz konstruktora zapytań w następujący sposób, zakładam, że Twoje podmioty są zmapowane z odpowiednimi relacjami wiele do wielu

$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();

Dla odniesienia zobacz inną odpowiedź tutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie Mysql GROUP by i ORDER by

  2. jak zmienić limit czasu dla trwałych połączeń mysql

  3. Indeksuj bazę danych MySQL za pomocą Apache Lucene i synchronizuj je

  4. MySQL UPDATE przy użyciu warunku IF

  5. Czy dodanie 'LIMIT 1' do zapytań MySQL przyspiesza je, gdy wiesz, że będzie tylko 1 wynik?