Accueil > Forum > > > > JOINTURE pas obliger
JOINTURE pas obliger
mercredi 8 décembre 2010 à 11:10:13 |
JOINTURE pas obliger

xactise
|
Bonjour à tous !
Petite question je vous expose la situation !
j'ai 4 objet différent qui ont 4 table différent avec des champs parfois identique parfois non.
C'est 4 objet, ont 1 point commun qui est un ID unique.
je souhaiterai faire une jointure sur ces 4 table (sachant qu'une seul d'entre elle correspondera a l'ID unique) donc j'utilise un LEFT JOIN, mais le problème c'est qu'il me selectionne * sur chaque table, même sur celle qui n'ont pas été jointe, du coup je me retrouve avec des champs NULL car la jointure n'a pas été faire et qui peuvent pour certain porter le même nom de champs que d'autre ou la jointure à réussi.
je sais pas si je me suis bien faire comprendre. voici ma requête :
Code :
SELECT *
FROM `ps_bureauvirtuel` AS bv
LEFT JOIN `ps_ressource_importation` AS ri ON ri.id_bv = bv.id_bureauvirtuel
LEFT JOIN `ps_ressource_importation_lang` AS ril ON ril.id_ressource_importation = ri.id_ressource_importation
AND ril.id_lang =2
LEFT JOIN `ps_testexercice` AS te ON te.id_bv = bv.id_bureauvirtuel
LEFT JOIN `ps_testexercice_lang` AS tel ON tel.id_testexercice = te.id_testexercice
AND tel.id_lang =2
WHERE bv.id_bureauvirtuel =118
LIMIT 0 , 30
pour reprendre le contexte, j'ai donc 4 objet qui correspondent a des "ressources" une ressource importation qui correspond a un outil qui permet de joindre un fichier quelquonque, et un autre par exemple textexercice qui permet de creer des quiz.
c'est différent objet ressource, sont regroupé dans un bureau virtuel c'est l'ID qui les identifie.
D'avance merci,
L0rD...
|
|
mercredi 8 décembre 2010 à 12:45:08 |
Re : JOINTURE pas obliger

syndrael
|
Euhh.. j'ai pas tout saisi. Tes NULL sont normaux, il faut bien mettre des données (même NULL) dans tes cases non ??
S.
|
|
mercredi 8 décembre 2010 à 13:56:34 |
Re : JOINTURE pas obliger

xactise
|
Bonjour et merci à toi !
Oui mes NULL sont "normaux" dans le sens ou en utilisant LEFT JOIN, même si la jointure n'est pas possible, il va selectionner les champs et mettre les value à NULL.
Ce que je souhaite c'est si il n'arrive pas a faire la jointure, il ne selectionne pas les champs.
J'ai plusieurs table à "comparer" je dirai dans le sens ou je doit les joindre à la requete, mais une seule d'entres elles, retournera un seul résultat, donc je veux éviter la selection des champs inutile (qui en plus pour certain, se nomme pareil) dans les jointures qui n'ont rien trouvé !
J'ai refait plusieur fois le tour de la question concernant la structure de la BDD, générallement quand on galère a joindre ces tables et a obtenir ce que l'ont veux c'est que la BDD à mal était pensé, mais après avoir refait le tour plusieurs fois je ne voit pas ce qui cloche, je me dit qu'une jointure de ce type doit exister, j'ai beau chercher je ne la trouve pas et dieu sais qu'il en existe de nombreuse de jointure ^^
D'avance merci,
L0rD...
|
|
mercredi 8 décembre 2010 à 18:53:52 |
Re : JOINTURE pas obliger

neigedhiver
|
Salut,
Dans une base de données correctement modélisée, on n'utilise JAMAIS le même nom pour des données différentes.
Comme si tu ne créais que des fichiers index.php partout, y'a un moment, faut pas s'étonner de s'y perdre.
Si tu fais SELECT * , faut pas t'étonner de récupérer tous les champs, même ceux dont tu n'as pas besoin.
Je ne vois pas où est vraiment le problème, si ce n'est dans le code (qu'on ne voit pas) ou dans la modélisation de la base (dont tu ne nous dis rien non plus).
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
jeudi 9 décembre 2010 à 08:16:44 |
Re : JOINTURE pas obliger

xactise
|
Bonjour neigedhier et merci pour ta participation qu'on sens toujours passer ^^
pour en revenir a ce que tu disais :
- Dans une base de données correctement modélisée, on n'utilise JAMAIS le même nom pour des données différentes.
Dans une BDD on utilise JAMAIS 2 fois le même nom de champs ??? heuuu je ne connaissait pas spécialement ce point ! mais c'est pas évident avec une Base de plus de 150 table. pour les rares exeption il y a les "as".
Comme si tu ne créais que des fichiers index.php partout, y'a un moment, faut pas s'étonner de s'y perdre.
Je ne voit pas vraiment le lien, en quoi on se perd d'avoir 30 fichier index.php dans des dossier différents ? dans le cas d'une BDD en cas de jointure jveux bien l'entendre en cas de jointure, mais le rapport avec le fichier index.php je suis moin fan ^^
Si tu fais SELECT * , faut pas t'étonner de récupérer tous les champs, même ceux dont tu n'as pas besoin.
JE ne m'étonne pas justement je le dit, qu'en utilisant un LEFT JOIN, même en ne trouvant pas de correspondance il retourne les résultat, hors moi je veux que s'il ne trouve pas de résultat il retourne rien, mais sans forcement stopper la requete avec un JOIN par exemple.
Je ne vois pas où est vraiment le problème, si ce n'est dans le code (qu'on ne voit pas) ou dans la modélisation de la base (dont tu ne nous dis rien non plus).
A croire que plus j'écrit de chose, moin je me fait comprendre ! le problème neut vien pas du coup d'ou le fait qu'il y en es pas... par contre je suis d'accord avec toi je le dit même plus haut, le problème vien certainement de la modélisation, mais après avoir fait plusieurs fois le tour je ne voit pas je me dit qu'une méthode SQL doit exister pour arrive a mes fins.
Cependant je vais ré-expliquer mais cette fois si côté modélisation de la BDD.
J'ai plusieur objet ! Exemple : des objet "importation de fichier" des objet "creation de document à la volée" (avec un éditeur WYSIWYG), etc...
c'est objet sont regrouper dans une sorte de bureau virtuel (des dossier, public ou privée, avec une récursive).
Ensuite je doit créer un cours ! dans ce cours je vais allez chercher plusieurs de mes objets qui sont stocker dans mon bureau virtuel.
Première étape du cour, je vais prendre mon document à la volée.
Deuxième étape du cour, je vais prendre mon fichier importer.
Comme ce sont 4 objet différent il n'ont pas d'ID en commun (c'est la que sa coince, je pense, mais pas sur j'y reviendrai)
Le problème qui va se poser c'est que en BDD je vais dire l'étape 0 du cours correspond a l'ID 8 mais de quel objet ? ID 8 d'un fichier importation ou ID 8 d'un fichier créer a la volée, ou autre encore...
Il est la mon problème.
Comme mes différentes objets (quiz, fichier importer, fichier créer, etc...) n'ont pas vraiment de point commun au niveau des donnée. ce sont 4 objet différent !
donc apres en cas de jointure sa coince !
Voila j'espère avoir était clair !
D'avance merci,
PS : dsl pour les fautes chui en retard, je ne me suis pas relu :)
L0rD...
|
|
jeudi 9 décembre 2010 à 08:44:20 |
Re : JOINTURE pas obliger

neigedhiver
|
Salut,
Désolé, je prends toujours un malin plaisir à bourrer mes réponses de cynisme ^^ Merci de l'avoir bien pris :p
Bon, moi, très sincèrement, je ne comprends toujours pas ton problème : je veux dire que je ne comprends rien, en fait. Je ne comprends toujours pas à quoi ressemble ta base de données, je ne comprends pas ce que tu obtiens, ce que tu aimerais obtenir, etc.
Est-ce que tu accepterais de détailler un peu plus ta bdd ?
Par exemple, en faisant un petit schéma des tables incriminées, en faisant un petit tableau avec les lignes que tu obtiens en expliquant celles que tu ne veux pas, ... Parce que vraiment, là, moi je pige rien à ce que tu décris ^^ (sans vouloir t'offenser ;) )
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
jeudi 9 décembre 2010 à 08:47:29 |
Re : JOINTURE pas obliger

neigedhiver
|
En fait le problème dans l'histoire, c'est que tu fais systématiquement le parallèle avec ton code PHP, alors qu'en ralité, on s'en fiche pas mal : on n'a pas besoin de ça pour faire fonctionner une requête : au contraire, ça embrouille plus qu'autre chose (en ce qui me concerne, du moins)
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
jeudi 9 décembre 2010 à 08:53:26 |
Re : JOINTURE pas obliger

xactise
|
Il n'y a absolument aucun code PHP dans toute cette histoire :)
J'expliquerai dans le détail ma BDD avec un shémas dès que je peux, car j'ai vraiment besoin de votre aide sur ce coup.
D'avance merci à tous, à tout a l'heure !
je vous fait sa dans la journée dès que j'ai un bout de temps !
L0rD...
|
|
jeudi 9 décembre 2010 à 10:05:17 |
Re : JOINTURE pas obliger

syndrael
|
C'est bête mais quel résultat veux tu obtenir ?
Je ne parle pas de mot, de description mais si on pars du principe que ton résultat est 'nécessairement' sous la forme d'un tableau, d'une matrice 2x2. A quoi peut ressembler le tableau final que tu désires ? Le point qui m'intéresse est de savoir ce que tu vas 'mettre' dans ce tableau pour les valeurs qui selon toi n'existent pas.
Suis je clair ? C'est bête mais c'est plus facile sur papier.. LOL..
S.
|
|
jeudi 9 décembre 2010 à 14:55:08 |
Re : JOINTURE pas obliger

xactise
|
Re tous le monde est encore merci de suivre ce post.
Pour vous aider a comprendre, ou pour m'aider a m'exprimer ^^
j'ai fait un schémas de la BDD de la parti qui nous intérèsse !
voir le screen ci joint
donc en gros nous avons un bureau virtuel qui concrètement sont des dossiers, 1 dossier appartien a 1 employé, il y a une recursive (id_parent) est ce que le dossier est public ou prive !
ensuite nous avons sa jointure pour la lang nom du dossier et description du dossier
2 tables de ressources - Importation de fichier et création de document via editeur WYSIWYG - (il y en a plus, mais c'est pour l'exemple) avec leur jointure de lang associés.
Et ces ressource sont donc join égallement a une table ressource et c'est la que sa coince, avec un type pour savoir de quelle table il sagit (ne pouvant pas mettre tous les type de ressource dans une même table car comme vous pouvez le constater, la ressource importation de fichier n'a pas besoin des même champs que la ressource document).
et cette ressource est donc dans un des dossiers de mon bureau virtuel.
quand je vais créer un cours par la suite, je vais y insérér des ressource.
par la suite je vais avoir besoin de récupéré ces informations dont est composer mon cours !
et j'aurai voulu le faire en une seul requête le souci c'est que la ce n'est pas possible car il y a un champs "type" dans la table ressource qui me dit dans quelle table je doit taper.
Je pense qu'il y a un souci au niveau de la BDD dans les différent type de ressource et leur donnée, et les RESSOURCES (l'ensemble de ts les type de ressource) mais je ne voit pas comment faire.
D'avance merci !
L0rD...
|
|
Cette discussion est classée dans : ressource, id, left, jointure, bv
Répondre à ce message
Sujets en rapport avec ce message
Ressource id #2 [ par lan0sic ]
Bonjour, j'aimerai savoir a quoi corespond "Ressource id #".je suis tomber plusieur fois dessu et la sa m'enerve.merciLanosic
problème de requête update avec php mysql [ par metapat ]
Bonjour, j'ai un problème d'UPDATE en php mysql, je ne le comprends pas voilà le bout de code:je veux mettre la table ressources à jour, elle contient
triple jointure JOIN LEFT SQL [ par coucou747 ]
Salut, Pour un projet, j'aimerais faire une triple jointure : j'ai fait une table mysql pour des contacts, une table qui contient des groupes, une ta
Jointure / pb affichage dans un while [ par cybermalicia ]
kikou à tous !!!Voila jsui en ce moment en train de créer un petit site dont je mettrait les sources en ligne une fois fini.Mais pour le moment j'ai u
Garder un ressource id en changeant de bdd [ par lowkey ]
Salut à tous !Je fais une requete sur une table d'une base de donnée, et j'en obtient une ressource id.Ensuite je dois aller faire des requetes sur un
Requête avec jointure non obligatoire [ par destiny ]
Bonjour, Ma requete (CI) : [color=green]$this->db->select('_ID_contact, _ID_bien, action, auto, commentaires.commentaire, commentaires.date_creation
Affiche le résultat d'une jointure [ par evenkil ]
Bonjour, j'ai un petit problème dans ma jointure, enfin, pour affiche le résultat.Ma requete :SELECT * FROM table1, table2 WHERE table1.ville = table2
Boucle jointure [ par gabi77 ]
BoujourMon probleme est le suivant.J'ai trois table table1, table2, jointure_table1_table2dans jointure_table1_table2 je recupere id_table1 et id_tabl
problème de LEFT JOIN en MySQL5 [ par kiki2sirom ]
Bonjour à tous,J'ai un souci avec certaines de mes requêtes avec MySQL5 (chez moi)En MySQL4 je n'ai pas de problème (au bureau)Explication : 1) déj
recherche necessitant jointure [ par christuckers ]
Bien le bonjour à tous les CSistes.C'est une question de débuta,t je sais mais je n'arrive pas à faire faonctionner un module de recherche qui necessi
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|