Bonjour,
Après pas mal de recherche, mais je pense mal chercher, je publie donc mon problème.
Situation :
* J'ai une table de "ressource" (des entreprises) : [sarcc_recurso] et une table de contacts (les gens qui travaillent dans ces entreprises) : [sarcc_recurso_telefono].
* J'ai un listing de résultats flanqué d'une navigation paginée par entreprises (qui peuvent avoir plusieurs contacts).
J'obtiens un début de résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT rec.id_recurso, rec.nombre AS rec_nombre, rect.id_recurso_telefono AS rect_id_recurso_telefono, rect.numero AS rect_numero, rect.archive AS rect_archive FROM sarcc_recurso as rec LEFT JOIN sarcc_recurso_telefono as rect ON rect.id_recurso = rec.id_recurso WHERE 1 AND ( ( rec.nombre LIKE 'c%' OR rec.nombre LIKE 'C%' ) OR ( rec.nombre LIKE 't%' OR rec.nombre LIKE 'T%' ) ) AND rect.archive != '1' GROUP BY rec.id_recurso ORDER BY rec.nombre ASC, rec.id_recurso_tipo DESC, rec.id_recurso DESC LIMIT 0, 10
La liste des 10 premières d'entreprises (si elles commencent par C ou T) et leur 1 premier contact non archivés, si et seulement si l'entreprise contient un contact non archivé.
Ce que je cherche à obtenir (et là où je me perd):
La liste des 10 premières d'entreprises (qui elles commencent par C ou T, avec ou sans contact, archivés ou non) et la liste (sous liste) de leurs contacts non archivés.
Ce que je vois en Php comment faire de manière barbare en 2 select et 1 while :
Et je tente bien entendu de faire cela en 1 requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT rec.id_recurso, rec.nombre AS rec_nombre rect.archive AS rect_archive FROM sarcc_recurso as rec WHERE 1 AND ( ( rec.nombre LIKE 'c%' OR rec.nombre LIKE 'C%' ) OR ( rec.nombre LIKE 't%' OR rec.nombre LIKE 'T%' ) ) ORDER BY rec.nombre ASC, rec.id_recurso_tipo DESC, rec.id_recurso DESC LIMIT 0, 10 => while (results) { SELECT rect.id_recurso, rect.id_recurso_telefono AS rect_id_recurso_telefono, rect.numero AS rect_numero, rect.archive AS rect_archive FROM sarcc_recurso_telefono as rect WHERE 1 AND rect.id_recurso = ".$rec_id_recurso.", AND rect.archive != '1' ORDER BY rect.numero ASC, rect.id_recurso_telefono DESC }
Si quelqu'un pourrait me donner une piste, cela serait fort gentil.
Merci pour votre aide
Partager