Trier 3 tables MySQL
CicinhoRaul
Messages postés
221
Date d'inscription
Statut
Membre
Dernière intervention
-
Marco la baraque Messages postés 996 Date d'inscription Statut Contributeur Dernière intervention -
Marco la baraque Messages postés 996 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, j'ai un petit problème en MySQL :
J'ai 3 tables dont 2 reliés à la troisieme table par un 'id_entreprise'
Je voudrais tout afficher ( les 2 tables reliés en fait) par tri en fonction du nom de l'entreprise : nom_soc
Table 1 : Sports : id_sport,id_entreprise,nom, prenom,etc..
Table 2 Cinema : id_cinema,id_entreprise,nom,prenom,etc..
Table 3 : Societe : id_entreprise,nom_societe.
J'ai fait un $sql = "SELECT * FROM ( SELECT * FROM societe,cinema,sport WHERE
( (societe.id_entreprise = cinema.id_entreprise) AND
(societe.id_entreprise = sport.id_entreprise))
ORDER BY societe.nom_societe );
Helas cette commande ne semble pas marcher
Merci d'avance pour votre aide
J'ai 3 tables dont 2 reliés à la troisieme table par un 'id_entreprise'
Je voudrais tout afficher ( les 2 tables reliés en fait) par tri en fonction du nom de l'entreprise : nom_soc
Table 1 : Sports : id_sport,id_entreprise,nom, prenom,etc..
Table 2 Cinema : id_cinema,id_entreprise,nom,prenom,etc..
Table 3 : Societe : id_entreprise,nom_societe.
J'ai fait un $sql = "SELECT * FROM ( SELECT * FROM societe,cinema,sport WHERE
( (societe.id_entreprise = cinema.id_entreprise) AND
(societe.id_entreprise = sport.id_entreprise))
ORDER BY societe.nom_societe );
Helas cette commande ne semble pas marcher
Merci d'avance pour votre aide
A voir également:
- Trier 3 tables MySQL
- Excel trier par ordre croissant chiffre - Guide
- Ai suite 3 - Télécharger - Optimisation
- Tables des matières word - Guide
- Picasa 3 - Télécharger - Albums photo
- Logiciel pour trier les photos automatiquement - Guide
10 réponses
Bonjour,
Que te retourne la requête suivante ?
Cordialement,
Que te retourne la requête suivante ?
select * from sports sp, cinema c, societe so where sp.id_entreprise = so.id_entreprise and so.id_entreprise = c.id_entreprise group by so.id_entreprise order by so.nom_societe
Cordialement,
Salut
Regarde ta requête, elle est bizarre
[req]
SELECT * FROM (SELECT * FROM xxxx WHERE yyyy ORDER BY zzzzz);
[\req]
Pourquoi ton premier SELECT ?
Regarde ta requête, elle est bizarre
[req]
SELECT * FROM (SELECT * FROM xxxx WHERE yyyy ORDER BY zzzzz);
[\req]
Pourquoi ton premier SELECT ?
SLt , merci de vos reponses, oui mikebzh je me suis trompé en faisant un double select, inutile !
Ensuite, Marco, j'ai essayé ta commande, elle n'affiche qu'une seule ligne
J'ai pourtant au moins 1 element dans chacune des tables sport et cinema :S
Mais je vais continuer à creuser ;)
Merci de vos aides
Ensuite, Marco, j'ai essayé ta commande, elle n'affiche qu'une seule ligne
J'ai pourtant au moins 1 element dans chacune des tables sport et cinema :S
Mais je vais continuer à creuser ;)
Merci de vos aides
Helas ca ne fonctionne pas :S:S J'ai verifier en enlevant soit la table CINEMA soit la table SPORT c'est OK mais en mettant les deux, plus rien n'apparait.
C'est parce que tes deux tables sports et cinéma ne sont pas toujours reliés reliés à une société (ou alors un sport est lié à une société, un cinéma à une société, mais les deux ne sont pas liés à une même société).
Peux-tu traduire en français, explicitement, ce que tu souhaites faire de manière fonctionnelle stp ? Décrire un peu ta problématique, sans parler d'informatique.
Merci,
Peux-tu traduire en français, explicitement, ce que tu souhaites faire de manière fonctionnelle stp ? Décrire un peu ta problématique, sans parler d'informatique.
Merci,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Slt Marco,
Le but c'est d'afficher tous les contacts triés par société.
Exemple de contacts :
Sport : Toto,Yahoo,Football
Cinema : Titi,Pathé,Titanic un autre contact Cinema : Tutu,Yahoo,Rrrrr
En faisant le select par tri de l'entreprise :
Pathé Titi Titanic
Yahoo Toto Foot
Yahoo Tutu Rrrr
Si Tutu n'apparaissait pas alors on aurait comme tri :
Pathé Titi Titanic
Yahoo Toto Foot
Evidemment il y a les ID qui sont reliés comme j'ai dit au-dessus.
Voila jespere que j'ai été clair :S, MERCI de TON AIDE.
Le but c'est d'afficher tous les contacts triés par société.
Exemple de contacts :
Sport : Toto,Yahoo,Football
Cinema : Titi,Pathé,Titanic un autre contact Cinema : Tutu,Yahoo,Rrrrr
En faisant le select par tri de l'entreprise :
Pathé Titi Titanic
Yahoo Toto Foot
Yahoo Tutu Rrrr
Si Tutu n'apparaissait pas alors on aurait comme tri :
Pathé Titi Titanic
Yahoo Toto Foot
Evidemment il y a les ID qui sont reliés comme j'ai dit au-dessus.
Voila jespere que j'ai été clair :S, MERCI de TON AIDE.
En mettant un OR à la place du AND dans ta commande MySQL, j'obtiens les deux entreprises mais les nom prenom et le reste sont identiques :(:(
Mais en mettant deux requetes différentes, je n'obtiendrai un tri par table Cinema puis Sport ou inversement mais pas par entreprise.
Je sais si je suis comprehensible :S
Merci en tous cas de ta disponibilité
Je sais si je suis comprehensible :S
Merci en tous cas de ta disponibilité
Si, tu pourras trier par entreprise.
C'est juste que comme tu devras assembler tes deux résultats, qui seront chacun trié par entreprise, une simple concaténation ne suffira pas pour trier l'ensemble.
Il faut bien rester conscient que le SQL est un langage de requête, ce n'est pas conçu pour faire de l'affichage. Tous les langages implémentent des méthodes de tri pour justement subvenir à ce genre de besoin.
C'est juste que comme tu devras assembler tes deux résultats, qui seront chacun trié par entreprise, une simple concaténation ne suffira pas pour trier l'ensemble.
Il faut bien rester conscient que le SQL est un langage de requête, ce n'est pas conçu pour faire de l'affichage. Tous les langages implémentent des méthodes de tri pour justement subvenir à ce genre de besoin.
Ok Marco mais je ne vois pas comment faire le tri si tu pouvais m'aider s'il te plait :
Car ici j'ai les deux requetes
$sql = "SELECT * FROM sport sp WHERE sp.id_entreprise = so.id_entreprise";
$sql1= "SELECT * FROM cinema sp WHERE c.id_entreprise = so.id_entreprise";
Apres il faut que j'essaie d'assembler les deux.
Car ici j'ai les deux requetes
$sql = "SELECT * FROM sport sp WHERE sp.id_entreprise = so.id_entreprise";
$sql1= "SELECT * FROM cinema sp WHERE c.id_entreprise = so.id_entreprise";
Apres il faut que j'essaie d'assembler les deux.
Moi je ferais un :
Et
Après à toi de regrouper les deux résultats.
Cordialement,
select sp.*, so.nom_societe from sport sp, societe so where so.id_entreprise = sp.id_entreprise order by so.nom_societe
Et
select c.*, so.nom_societe from cinema c, societe so where so.id_entreprise = c.id_entreprise order by so.nom_societe
Après à toi de regrouper les deux résultats.
Cordialement,
Ok Marco, encore merci de ton aide,je vais peut etre te deranger encore, mais j'arrive pas à regrouper les deux :S:S
J'ai pensé a faire un union mais rien ne fonctionne.
J'ai pensé a faire un union mais rien ne fonctionne.
Je t'ai dit que ça ne peut pas se faire en SQL.
Tes requêtes retournent des données différentes, SQL ne peut pas les regrouper. Si tes données sont à ce point semblables, la seule manière (mais c'est pas terrible du tout), c'est de les stocker dans une même table.
Ici, il faut que tu utilises php pour trier correctement les ressources retournées par tes deux requêtes.
Cordialement,
Tes requêtes retournent des données différentes, SQL ne peut pas les regrouper. Si tes données sont à ce point semblables, la seule manière (mais c'est pas terrible du tout), c'est de les stocker dans une même table.
Ici, il faut que tu utilises php pour trier correctement les ressources retournées par tes deux requêtes.
Cordialement,