limit + jointures

6 réponses
AuteurMessage

Geo 113 |
Modérateur

Photo de Geo 113

Inscrit le : 04/05/2005

# Le 05/10/2006 à 20:23

Je voudrais faire une utilisation qui ne me semble pas spectaculaire de jointures avec une clause limit,

mais là je n'y arrive pas alors si vous avez une idée.

Je voudrais sélectionner pour chaque type d'enregistrement 2 d'entre eux.

hors la clause limit 2 limite à la sortie de 2 enregistrements au total, sans passer au type suivant, une idée ?


CosmixOuvrir dans une nouvelle fenetre
Rendez imprévisible l'Economie; Mentez aux sondages

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 05/10/2006 à 20:57

euh ... donne un exemple stp ... à priori, il faudrait que tu vois du côté de HAVING (genre un HAVING COUNT(type) = 2) mais je sais pas trop vu la question ...

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

Geo 113 | Geoffrey
Modérateur

Photo de Geo 113

Inscrit le : 04/05/2005

# Le 05/10/2006 à 21:38

J'ai dans la table (e.g : Tableau) des enregistrements (e.g : tableau1 tableau2 etc) avec un certain nombre de type (e.g tableau bleu, tableau rouge), il y a plusieurs enregistrements par type .

je veux que la requête sorte 2 tableaux bleus, 2 tableaux rouges, 2 verts etc. en une seule requête.

CosmixOuvrir dans une nouvelle fenetre
Rendez imprévisible l'Economie; Mentez aux sondages

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 05/10/2006 à 21:45

Humm une idée :

Fait 2 requètes SQL avec un Union

(SELECT champ1, champ2 FROM ...)
UNION
(SELECT champ1, champ2 FROM ...)


... j'ai pas capté le cheminement de ton contenu mais je pense que ca peux t'aider ;)

@+ Jean-Philippe

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 05/10/2006 à 22:55

oki donc :

SELECT t1.enregistrement, t2.enregistrement, t1.type
FROM table t1
LEFT JOIN table t2 ON t1.type = t2.type AND t1.enregistrement != t2.enregistrement
GROUP BY t1.type


Ainsi tu te retrouves avec un seul type par ligne renvoyée mais deux enregistrements ...

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

Geo 113 | Geoffrey
Modérateur

Photo de Geo 113

Inscrit le : 04/05/2005

# Le 06/10/2006 à 00:45

en fait voilà la requête développée

SELECT type FROM table1 GROUP BY type

puis un mysql fetch array qui utiliserai la valeur type dans une requête suivante

SELECT nom FROM table1 WHERE type='$type' limit 2

mais faire ceci en 1 seule commande, des jointures étant liées à cette requete

j'ai un peu tout troublé en parlant de jointures qui n'étaient pas directement liées à la problématique.

je vais aller dormir aussi

merci en tout cas

CosmixOuvrir dans une nouvelle fenetre
Rendez imprévisible l'Economie; Mentez aux sondages

bhamp0 | Benjamin
Membre

Photo de bhamp0

Inscrit le : 09/05/2005

# Le 06/10/2006 à 09:18

Ma solution devrait fonctionner :

SELECT t1.nom AS nom1, t2.nom AS nom2, t1.type AS type
FROM table1 t1
LEFT JOIN table1 t2 ON t2.type = t1.type AND t2.id != t1.id
GROUP BY t1.type


Pour chaque "type", tu vas avoir un ou deux "nom"s correspondants (l'utilisation du LEFT JOIN étant faite pour que s'il n'y a qu'un seul nom associé à un type, celui-ci soit quand même sorti).

Quand on voit c'qu'on voit, et qu'on entend c'qu'on entend, on a raison d'penser c'qu'on pense !

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 10:06:42 | Généré en 50.31ms | Contacts | Mentions légales |