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).

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
J'obtiens un début de résultat :
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 :
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
}
Et je tente bien entendu de faire cela en 1 requête

Si quelqu'un pourrait me donner une piste, cela serait fort gentil.

Merci pour votre aide