structure sur jointure.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : structure sur jointure.

Re: structure sur jointure.

par xTG » 14 juin 2012, 11:38

Méthode pas propre du tout : eval()
Méthode plus propre : utiliser des tokens, les parser (str_replace et compagnie) pour les remplacer par les valeurs des variables correspondantes.

Re: structure sur jointure.

par piotrowski-s » 14 juin 2012, 11:25

oui mais si je fais une requete avec un echo $var
il va m'afficher après exécution <?php echo $var ; ?>

et non pas le contenu de l'exécution de la requête....

Re: structure sur jointure.

par xTG » 14 juin 2012, 11:05

Dans ce cas pourquoi pas, ce n'est pas du code de traitement.

Re: structure sur jointure.

par piotrowski-s » 14 juin 2012, 10:54

non en fait ce que je veux stocker sur ma bdd c'est uniquement des trucs du genre

dans des long text
<p align="right"><?php echo $user['civilite'] ; ?> <?php echo $user['nom'] ; ?> <?php echo $user['prenom'] ; ?></p>
etc en fait toute ma lettre.

et après je dois les récupérer.

Re: structure sur jointure.

par xTG » 14 juin 2012, 10:26

Je suis pas trop partisan de stocker du code en base de données pour ma part...
J'opterai pour la création d'un modèle de script fichier.
A savoir que la création d'un modèle générerai le code PHP qui va avec.

Ou bien plus compliqué en restant sur l'idée de la base de données, stocker uniquement les relations dont tu as besoin et ce pas en SQL mais sous forme de couple.
Cela permet d'avoir une totale abstraction du langage SQL tout en gardant l'information.

Re: structure sur jointure.

par piotrowski-s » 14 juin 2012, 10:08

non en fait je créé des courriers type, ces courriers doivent être enregistrés dans la base de donnée,k et lors de l'édition, on fait appel au courrier via la bdd.

la c'est pour la création je dois bien les stocker quelque part.

Re: structure sur jointure.

par xTG » 14 juin 2012, 09:47

Ghé ? Pourquoi veux-tu stocker du code en BDD ?
T'as pas un fichier PHP pour stocker cela ? :roll:

Re: structure sur jointure.

par piotrowski-s » 14 juin 2012, 08:42

en fait je vais être ammené à stocker des requêtes dans ma bdd, pour pouvoir les exploiter lors de la génération d'un courrier, y'a t'il un moyen parce que la je ne veux pas afficher le code stocké avec un echo mais l'exécuter?

par avance merci.

Re: structure sur jointure.

par xTG » 13 juin 2012, 20:14

SELECT ...
FROM Table1
  LEFT JOIN Table2 ON (table1.N°Dossier = table2.N°Dossier)
  LEFT JOIN Table3 ON (table2.CODE = table3.CODE)

Re: structure sur jointure.

par piotrowski-s » 13 juin 2012, 16:26

bien en fait il s'agit de 11 tableS.

je dois pouvoir créer des courriers en fait la création d'un courrier c'est la création du corps de la lettre avec les champs de fusion (avant j'étais sous windev et sous word) la je suis sur php et mysql. j'utilises fckeditor.

j'ai donc 11 tables.

toutes ces tables contiennent des adresses et des chiffres.
en fait elles sont identifiées par un numero de dossier et ou un code client
c'est a dire que toutes les tables n'ont pas de code client, mais on peut toujours faire le rapprochement soit entre deux tables par suivant le schéma sous jacent:

Table 1
N° DOSSIER CODE CLIENT ADRESSE CLIENT (Par exemple)

Table 2
N° DOSSIER NOM PRENOM

Table 3
CODE CLIENT ADRESSE VILLE

donc en théorie je peux faire une jointure de la table 1 et 2 mais je devrais aussi pouvoir adjoindre la table 3 non?

la le truc que je dois faire c'est ce module pour créer des courriers
et les courriers peuvent reprendre tous les élements de la base de donnée.

j'ai donc créer la liste des champs de fusion (sur l'image a droite)
et en fait je ne sais pas comment récupérer les valeurs de ces champs stockés dans mysql.

Re: structure sur jointure.

par sirakawa » 13 juin 2012, 16:18

Pose tout par terre, on va essayer de trier, et peut-être quelqu'un comprendra-t-il ton besoin EXACT.
du genre :
structure de chacune des 11 tables

Comme le dit Xtg ci-dessus, si jointure entre deux tables c'est qu'elle ont un point commun:
le catalogue de la redoute avec un numéro pour chaque produit et le tarif avec en face de chaque numéro de produit le prix de ce produit, et la liste des fournisseurs avec en face de chaque numéro de produit le fournisseur de ce produit...

Re: structure sur jointure.

par piotrowski-s » 13 juin 2012, 15:53

en fait dans le cadre d'un module de courrier j'ai besoin de récupérer plusieurs champs correspondant a plusieurs criteres. et c'est la le soucis car j'ai tout éparpillé dans 11 tables, il y a un dénominateur commun au minimum qui est un numero de dossier et deux au maximum qui est le numero de dossier et le code client et ce pour chaque table.

donc en fait, comme j'ai tout avec fckeditor je souhaite faire des sortes de prérequêtes et que lorsque la personne qui créé un courrier l'enregistre les requêtes seront soit enregistrées dans des champs cachés et les champs apparaintront
apper.png
en fait tout est réparti sur les 11 tables et j'ai besoin que la personne qui créé un courrier puisse sélectionner les éléments qu'elle a besoin pour le courrier, en fait tout n'enregistrerait que les requêtes dans la base de donnée, et lorsqu'on édite un courrier alors en fonction du courrier et des paramètres de l'url alors les champs seraient remplis. La ce n'est que totu sélectionner et faire des prérequêtes. pour la création, lors de l'édition en fonction des paramètres url le courrier se rempli.

Re: structure sur jointure.

par xTG » 13 juin 2012, 15:36

Une jointure comme son nom l'indique c'est toujours sur deux éléments. Or si les deux éléments n'ont rien en commun on perd tout l'avantage de notre base de données relationnelle !
Bref jointure => pas ce que tu recherches.
On ne mélange pas les carottes avec le liquide vaisselle sauf quand on fait la vaisselle de l'assiette du petit cousin.

Si ton objectif est de tout récupérer dans un seul appel au SGBD tu peux regarder du côté de l'UNION :
SELECT ... FROM maTable
UNION
SELECT ... FROM maTable2
Seulement il faut que chaque requête retourne le même nombre de champ et sous le même alias.

Mais encore une fois je pense que tu mériterai à réfléchir à deux fois avant de te lancer et de repenser à ce que tu as besoin.

INNER JOIN et LEFT JOIN : http://sqlpro.developpez.com/cours/sqla ... es/#LIII-C

structure sur jointure.

par piotrowski-s » 13 juin 2012, 14:34

bonjour à toutes et a tous, j'ai un soucis en fait j'ai été confronté a plusieurs messages d'erreurs.

J'ai besoin de faire une requete sur plusieurs jointures.

donc quand c'etait deux tables pas de sosucis je faisais SELECT * FROM table1 INNER JOIN table 2 ON `table1`.`column1`= `table2`.`column2` WHERE mes critères LIKE %$_GET['criteres']

Présentement j'ai une requête a faire du même type mais avec 11 tables, le soucis c'est que ces tables l'ont pas toutes une colonne en commun, je m'explique je peux avoir table a colonne a, colonne b, colonne c
et table b colonne a, colonne b, colonne c.

Ca ferait donc une requête possible mais la en fait je dois tout joindre en sachant qu'il peut y avoir au moins une colonne en commun, mais pas toujours c'est a dire que les tables auront toujours un critere identique de colonne, mais pas toutes le même par exemple la 3eme table peut avoir un critere en commun avec la deuxieme mais sans en avoir avec la deuxieme.

Et au vue de mes 11 tables je ne sais pas comment doit se presenter le requete je supposais SELECT * FROM table 4 INNER JOIN table 2 ON `table1`.`column1`= `table2`.`column2` INNER JOIN table 3 ON `table2`.`column2`= `table3`.`column3` INNER JOIN table 3 ON `table4`.`column4`= `table3`.`column3`

cette forme est elle correcte?

dernière question quel est la difference entre INNER JOIN ET LEFT JOIN ? y'a t'il d'autre requete que INNER et LEFT?

par avance merci.