begin process at 2012 05 30 22:05:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

JOINTURE pas obliger


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

JOINTURE pas obliger

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

xactise

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club
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

Membre Club
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...

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales