PB sur résultat de requête dite complexe... - SQL/NoSQL - Programmation
Marsh Posté le 13-09-2006 à 22:42:16
bon je comprends pas trop ce que tu veux faire, mais qques pistes :
- problème 1 : normal, tu mets une condition "`acteurscenario`.`scenar_film_id` =17061" donc tu auras obligatoirement les lignes qui correspondent
essayes d'ajouter un OR dans ta parenthèse : (acteurscenario.scenar_film_id=17061 OR acteurscenario.scenar_film_id is null)
- problème 2 : tu peux ajouter dans ta clause le mot DISTINCT, cela te permettra d'éviter les doublons
Code :
|
Marsh Posté le 14-09-2006 à 10:26:51
je comprend pas trop ta requete non plus
tu ne fait pas de jointures entre tes tables
tu devrais utiliser des LEFT JOIN
Marsh Posté le 14-09-2006 à 11:04:00
Pour le distinct, oui c'est sur ==> suppression des doublons, 'scuse, pas réflechi plus que ça !!!
Le left join, je vois bien sur 2 tables : pa ni p'oblem ti male, mais dans mon cas, j'ai environ 10 tables que je voudrais lier dansune rq !
Suis je assez clair ?
Merci de votre aide !
Marsh Posté le 14-09-2006 à 16:17:41
J'ai à peu pres compris ce qui te dérange, mais ta logique m'échappe completement.
Peux tu répondre aux questions suivantes ça devrait permettre aux autres de t'aider car je n'aurais pas le temps avant demain matin :
- As tu une table Film quelque part ? Si oui décrit la.
- Quelle colonne tu souhaites obtenir à la fin ?
- Et comment tu comptes n'avoir qu'une seule ligne si tu as deux enregistrement différents pour 17061 dans une de tes quatres tables ?
Marsh Posté le 14-09-2006 à 17:13:41
tu peux déjà faire une jointure externe pour ton premier problème (LEFT OUTER JOIN en SQL SERVER/ACCESS, le petit + en ORACLE).
Pour ton second problème, c'est normal d'avoir deux lignes. Mais tu auras des valeurs différentes dans certains champs.
Donc la aussi, tu peux forcer d'avoir qu'une ligne (ROWCOUNT en ORACLe, LIMIT en MYSQL)...
Marsh Posté le 15-09-2006 à 21:02:50
Merci de vos réponses !
Je suis en mysql, mais je verrai ultérieurement le pb du nombre retourné de résultat.
La table film est dans une autre base, je ne veux pas pour le moment faire de jointure dessus.
Voici le résultat de mon avancement, les explications à suivre :
Code :
|
Alors pourquoi tout ça ??
1/ une requete est plus rapide que 10 !
2/ tout récupérer d'un jet.
Contraintes problématiques :
Si un seul champ est à nul, alors plus mysql_num_rows = 0 !
Le nombre de résultat par type est totalement variable : de 1 à n ...
La description de la table film n'apportera rien saut à dire qu'il y a un ID unique et qu'on retrouve dans les champs idfilm ou film_id selon la fonction des personnes sur le plateau.
Chacune de ces tables fait le lien film(idfilm)-->lien(idfilm/idpersonne)-->personne(idpersonne)
Voilà !
En tout cas, merci à tous et bon ouique ;-)
Marsh Posté le 13-09-2006 à 21:46:51
Bonjour à tous !
Je m'explique, ma requête est la suivante :
Le problème :
si dans acteurscenario je n'ai pas de correspondance à 17061, ça ne me retourne rien.
Si j'ai deux fois 17061 dans acteurscenario, j'ai deux lignes en retour.
Or, même si je n'ai rien dans acteurscenario, je veux le reste qui est dans deco, monteur, etc...
Et par la même n'avoir qu'une seule ligne de résultat au lieu de :
NB : il y a encore d'autres tables à joindre à cette de requete, et je ne vois pas trop comment jouer avec le left join !!!!
Si quelqu'un a la clé de cet étrange chose que je pose là... Je remercie d'avance !
@+
lenono