Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2379 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP MYSQL]

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP MYSQL]

n°770428
skazog59
Posté le 20-06-2004 à 18:57:44  profilanswer
 

Bonjour,
je fais une espece de site intranet pour la gestion de gamin pour un camp de vacance.
et j'ai quelque souci pour sortir des listing:
en effet il existe une table inscription dans ma base de donnée qui contient les champ suivant:
enfant_id groude_id periode
 
vous l'aurez devinez : les deux premier champs sont les clé se raportant au groupe et à l'enfant et periode est un cham de type date correspondant à la date ou l'enfant va aller à son activite.
 
le probleme étant qu'un enfant peut aller à plusieur activité en une journée (donc plusieur ligne dans la table)
 
les entete du tableau pour le listing se presente à peut pret ainsi: nom|prenom|age|classe|groupe1(par ex garderie matin)|groupe2(ex: repas)|groupe3(ex:garderie aprem)....
 
donc nom, prenom, age et classe sont des info que je vais trouver dans la table du gamin (je devrait surement faire un classement par orde alphabetique(donc pas par ID))
et ensuite la ou il y a les groupes, mettre des croi si le gamin est inscrit et rien sinon (ou un truc du genre)
 
ca serait bien d'arriver à faire une super requete qui fasse tout si vous avez une idée???

mood
Publicité
Posté le 20-06-2004 à 18:57:44  profilanswer
 

n°770515
esox_ch
Posté le 20-06-2004 à 21:50:54  profilanswer
 

Donc si j'ai bien compris, tu as 2 tables. L'une ou tu as les info sur les gamins et l'autre c celle ki contient enfant_id groupe_id periode et tu veux ke ca te sorte des donées venant des 2 tables? Dit moi si c ca, que je te concocte la rekete sql :D

n°770562
Ayuget
R.oger
Posté le 20-06-2004 à 22:57:54  profilanswer
 

Code :
  1. SELECT a.nom,a.prenom,a.age,a.classe,b.groupe_id FROM table1 a LEFT JOIN table2 b ON a.id=b.enfant_id


Ca te renvoie la liste des gamins avec leurs infos et le groupe auquel ils sont attachés (qu'ils soient inscrits quelque part ou pas)


Message édité par Ayuget le 20-06-2004 à 22:59:16
n°770789
esox_ch
Posté le 21-06-2004 à 08:10:12  profilanswer
 

lol bizard ta rekette ayuget :D moi j'aurais plutot vu :
 
SELECT a.nom,a.prenom,a.age,a.classe,b.groupe_id FROM a,b WHERE a.id = b.enfant_id
 
Enfin bon si les 2 marches, c ca l'essentiel :D

n°770849
jagstang
Pa Capona ಠ_ಠ
Posté le 21-06-2004 à 09:13:36  profilanswer
 

c'est pas bizzare, c'est une autre norme SQL (celle native de Mysql)  
 
left join, outer join etc
 
la première est peut-être plus rapide (quoique j'en doute) mais il est vrai moins facile à comprendre


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°770879
esox_ch
Posté le 21-06-2004 à 09:38:50  profilanswer
 

Je dis bizard pask je connais pas :D, dans mes boukins j'ai tj vu la mienne (c pr ca ke j'utilise ke celle la ;) ) mais c bon a savoir k'il y a plusieurs types :D

n°770889
Ayuget
R.oger
Posté le 21-06-2004 à 09:50:13  profilanswer
 

JagStang a écrit :

c'est pas bizzare, c'est une autre norme SQL (celle native de Mysql)  
 
left join, outer join etc
 
la première est peut-être plus rapide (quoique j'en doute) mais il est vrai moins facile à comprendre


bah l'avantage c'est que là, les gamins ne sont pas obligés d'être inscrits à un groupe pour être affichés. Ca peut servir si il veut faire des pré-inscriptions ou des trucs comme ca.  
Enfin, c'est ce que j'ai pensé  [:romn]

n°771330
ratibus
Posté le 21-06-2004 à 13:39:35  profilanswer
 

esox_ch a écrit :

lol bizard ta rekette ayuget :D moi j'aurais plutot vu :
 
SELECT a.nom,a.prenom,a.age,a.classe,b.groupe_id FROM a,b WHERE a.id = b.enfant_id
 
Enfin bon si les 2 marches, c ca l'essentiel :D

Une jointure en SQL standard c'est avec JOIN. La requête que tu donne n'est pas "standard SQL" pour une jointure mais elle donne un resultats identique grâce à la restriction que tu mets (a.id=b.enfant_id).
 
Conceptuellement (en algèbre relationnelle qui est la base du SQL) faire un JOIN ou un WHERE ça n'a rien à voir :)

n°771354
Ayuget
R.oger
Posté le 21-06-2004 à 13:59:39  profilanswer
 

ratibus a écrit :

Une jointure en SQL standard c'est avec JOIN. La requête que tu donne n'est pas "standard SQL" pour une jointure mais elle donne un resultats identique grâce à la restriction que tu mets (a.id=b.enfant_id).
 
Conceptuellement (en algèbre relationnelle qui est la base du SQL) faire un JOIN ou un WHERE ça n'a rien à voir :)


Ben nan pas tout à fait...
Là, si un enfant n'est inscrit à aucun groupe, l'enregistrement ne sera pas retourné.

n°771377
ratibus
Posté le 21-06-2004 à 14:11:54  profilanswer
 

Ayuget a écrit :

Ben nan pas tout à fait...
Là, si un enfant n'est inscrit à aucun groupe, l'enregistrement ne sera pas retourné.

Oui pour un LEFT JOIN.
 
Mais dans le cadre d'une équijointure (INNER JOIN), c'est équivalent (en tout cas pour MySQL) au niveau des performances.
 
Pour la lisibilité je trouve ça beaucoup moins lisible de faire les jointures avec un WHERE plutot qu'avec JOIN (le WHERE applique une restriction sur une source données tandis que le JOIN modifie cette source de données).

mood
Publicité
Posté le 21-06-2004 à 14:11:54  profilanswer
 

n°771595
skazog59
Posté le 21-06-2004 à 16:37:05  profilanswer
 

Ayuget a écrit :

Code :
  1. SELECT a.nom,a.prenom,a.age,a.classe,b.groupe_id FROM table1 a LEFT JOIN table2 b ON a.id=b.enfant_id


Ca te renvoie la liste des gamins avec leurs infos et le groupe auquel ils sont attachés (qu'ils soient inscrits quelque part ou pas)


 
oui ca, ca fonctionne si le gamin est inscrit a UN groupe mais si il est inscrit à plusieurs groupe j'aurai plusieur fois le meme enfant avec un groupe à chaque fois (don des doublon) alors ke je voudrai une seule fois l'enfant avec tous les ids de tous les groupe ou ils est inscrit...

n°772377
Ayuget
R.oger
Posté le 22-06-2004 à 10:19:59  profilanswer
 

skazog59 a écrit :

oui ca, ca fonctionne si le gamin est inscrit a UN groupe mais si il est inscrit à plusieurs groupe j'aurai plusieur fois le meme enfant avec un groupe à chaque fois (don des doublon) alors ke je voudrai une seule fois l'enfant avec tous les ids de tous les groupe ou ils est inscrit...


bah ouais, mais après t'a aucune difficulté à récupérer les groupes où l'enfant est inscrit... (plusieurs enregistrements avec le même enfant seront retournés)

n°772907
skazog59
Posté le 22-06-2004 à 16:20:41  profilanswer
 

l'idée c'était justement de pouvoir tout faire d'un coup
sinon la solution actuelle se resumer exactement à ce que tu dis Ayuget


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP MYSQL]

 

Sujets relatifs
[PHP/MySQL] - Remise à zero par rapport à une datePHP probleme easyphp et mysql_fetch_array
Php & Mysql ou Php et fichier texte[PHP/MySQL] - Afficher plusieurs nom d'un champs qu'une ... (RESOLU)
[PHP/MySQL] Afficher une fiche avec une url variablePHP/MySQL [noob] Classement détaillé
[Php/Mysql/Tableaux] Optimisation d'un codephp/Mysql $_session
[php/MySQL]Timestamps et dates tronquées 
Plus de sujets relatifs à : [PHP MYSQL]


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR