Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2007, 16h45   #1
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 120
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 120
Points : 45 283
Points : 45 283
Par défaut [SQL] requete en cascade ?

Désolé ppour le titre mais je ne sais pas comment m'exprimer ...

L'environnement:

J'ai un table article avec en clef primaire le code article ...

J'ai une table accessoires (codeArt, CodeAccessoire)
qui indique qules sont les accessoires liés au produit.

Et une table FiltreMenu(codeArt, IdRubrique)
qui donne lla ou les rubriques dasn lesquelle l'article doit figurer


Je dois renseigner la fiche article...

actuellement je fais une requete sur la table article avec le code de l'article à afficher
jusque là pas de soucis...
Là ou ça se corse pour moi c'est que sur cette fiche article je dois proposer la liste de tous les articles dont le champs accessoire est à true précédés d'un checkbox avec les checkbox cochés pour les accessoires déja attribué à l'article...

même chose pour les rubriques...

Dois je faire une seconde requete dans la boucle while du fetcharray de la première requete ? ou peut on faire une seule requete?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 17h06   #2
Membre actif
 
Avatar de fenkys
 
Inscription : octobre 2007
Messages : 157
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : octobre 2007
Messages : 157
Points : 181
Points : 181
Une seule requete en utilisant les jointures de tables. Plus de détails dans la FAQ SQL.

N'oublie pas que moins tu fais de requetes mieux c'est. Donc une requete dans une boucle est a éviter autant que possible.
fenkys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 17h15   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 120
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 120
Points : 45 283
Points : 45 283
Je me doutais bien que des JOIN pourraient faire le taff .. et je pensais que ce forum m'aurais permis d'avoir un bout de syntaxe sasn me faire jeter direct vers la FAQ ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 17h21   #4
Membre éclairé
 
Avatar de jota5450
 
Jota Alves
Inscription : janvier 2006
Messages : 263
Détails du profil
Informations personnelles :
Nom : Jota Alves
Âge : 36

Informations forums :
Inscription : janvier 2006
Messages : 263
Points : 303
Points : 303
slt...

Comme il manque des infos... et tu demande un bout de syntaxe ...

Code :
1
2
3
SELECT a.idArticle,b.codeaccessoires,b.CHAMP_INCONNUE FROM article a
 left join accessoires b on a.idarticle=b.codeart
 where CHAMP_INCONNUE =true;
ou un truc du genre
jota5450 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 17h31   #5
Membre chevronné
 
Avatar de debug
 
Inscription : avril 2002
Messages : 1 034
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 1 034
Points : 792
Points : 792
Alors après discussion sur le chat avec Spafy j'ai des éléments...

La table Article est constitué de ça(je nomme seulement ce qui nous est utile) :
Code Article
isAccessoire_Art (binary)

Je te propose ça pour tes accessoires :
Code sql :
1
2
SELECT Article_IsAccessoire.CodeArticle AS CodeAccessoire, Article_IsAccessoire.Libelle AS LibelleAccessoire, Accessoire.CodeArticle AS CodeArt FROM Article AS Article_IsAccessoire LEFT JOIN Accessoire ON Article_IsAccessoire.CodeArticle = Accessoire.CodeAccessoire
WHERE (((Accessoire.CodeArticle)=ArticleAAfficher) AND ((Article_IsAccessoire.isAccessoire_Art)=True)) OR (((Accessoire.CodeArticle) IS NULL) AND ((Article_IsAccessoire.isAccessoire_Art)=True));
Ca t'affiche :
Col1 : Le code de l'accessoire
Col2 : le libelle de l'accessoire
Col3 : le code de l'article si l'accesoire est coché (renseigné dans la base quoi )

En mode tabulaire tu auras, si on admet que tu as 4 accessoires et que ton article à l'accesoire 2 et 4 activés :
1 | accessoire 1 |
2 | accessoire 2 | ArticleAAfficher
3 | accessoire 3 |
4 | accessoire 4 | ArticleAAfficher

Donc pour tes rubriques : tu fais une seconde requete, sur le même principe. En remplacant la table Article par ta table rubrique.
__________________
May the Troll, be with you
(Que le troll soit avec toi)
debug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 17h31   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 120
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 120
Points : 45 283
Points : 45 283
Voici ce que l'on m'a proposé:

Code :
1
2
3
4
5
6
SELECT Accessoire.CodeArticle, Article_IsAccessoire.CodeArticle AS CodeAccessoire, Article_IsAcc
essoire.Libelle AS LibelleAccessoire
FROM Article AS Article_IsAccessoire LEFT JOIN Accessoire ON Article_IsAccessoire.CodeArticle = Accessoire.C
odeAccessoire
WHERE (((Accessoire.CodeArticle)=4) AND ((Article_IsAccessoire.isAccessoire_Art)=True)) OR (((Accessoire.CodeArticle) Is 
Null) AND ((Article_IsAccessoire.isAccessoire_Art)=True));
mais il faut maintenant que j'y ajoute les rubriques du menu ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h03.


 
 
 
 
Partenaires

Hébergement Web