Transformer SQL en QueryBuilder

Résolu
Bonjour,

J'ai une requête SQL que je dois faire en QueryBuilder, mais je n'arrive pas à cause de plusieurs leftJoin.

Voici ma requête SQL

SELECT r.lot,DATE_FORMAT(r.datetime_creation,'%d-%m-%Y %H:%i') as date_creation, u.societe, j_3.date_cloture , COUNT(r.id_reparation) as nb_element, j_2.nb_element_total
, IF(j_1.nb_element_cloture IS NULL,0,CONVERT((j_1.nb_element_cloture * 100 / j_2.nb_element_total),int)) as progression
FROM utilisateur u, reparation r
LEFT JOIN (SELECT COUNT(*) as nb_element_cloture, lot FROM reparation WHERE fk_reparation_statut_id IN (5,10,11,14,15,23,24,27)  GROUP BY lot) j_1 ON j_1.lot = r.lot
LEFT JOIN (SELECT COUNT(*) as nb_element_total, lot FROM reparation WHERE fk_reparation_statut_id > 0 GROUP BY lot) j_2 ON j_2.lot = r.lot
LEFT JOIN (SELECT DATE_FOreparationT(datetime_cloture ,'%d-%m-%Y %H:%i') as date_cloture,lot
              FROM reparation
              WHERE fk_reparation_statut_id IN (5,10,11,14,15,23,24,27)
              GROUP BY lot
             ORDER BY datetime_cloture DESC) j_3 ON j_3.lot = r.lot
  WHERE r.fk_reparation_statut_id IN(1, 16)
    AND r.revendeur = u.id_utilisateur


Est-il possible de mettre les SELECT dans les leftJoin avec QueryBuilder? et si oui comment dois-je procéder?

Merci !

1 réponse

  1. Contributeur
    bonjour,
    as-tu un message d'erreur?
    1. Bonjour, merci pour votre réponse, j'ai essayé plusieurs codes différant, mais je ne sais pas comment faire les sous-requêtes en createQueryBuilder et sur le net j'ai rien trouvé sauf ça, mais ça ne marche pas.

      https://askcodez.com/la-sous-requete-de-doctrine-dans-innerjoin.html
    2. Contributeur
      @Leo98montre-nous ce que tu as essayé et les résultats obtenus.
      la requête que tu nous montres fonctionne-t-elle?
      te donne-t-elle le résultat attendu?
    3. @yg_beMerci pour votre aide, je ne vous donne pas ma queryBuilder origine car la logique n'était pas bonne, donc je l'ai supprimé, voici un petit code d'exemple :
      j'ai ce code, comment transformer ça en QueryBuilder ?

      Je n'arrive pas à trouver la solution et votre aide me serait précieuse.

      SELECT * FROM `table`
      WHERE `nom_colonne` = (
          SELECT `valeur`
          FROM `table2`
        )
      


      Merci
    4. Contributeur
      @Leo98ce code SQL fonctionne bien?
    5. @yg_beBonjour, merci pour votre aide, finalement, j'ai choisi faire le DBAL.

      Cordialement,