[PHP MYSQL] - PHP - Programmation
Marsh Posté le 20-06-2004 à 21:50:54
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
Marsh Posté le 20-06-2004 à 22:57:54
Code :
|
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)
Marsh Posté le 21-06-2004 à 08:10:12
lol bizard ta rekette ayuget 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
Marsh Posté le 21-06-2004 à 09:13:36
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
Marsh Posté le 21-06-2004 à 09:38:50
Je dis bizard pask je connais pas , 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
Marsh Posté le 21-06-2004 à 09:50:13
JagStang a écrit : c'est pas bizzare, c'est une autre norme SQL (celle native de Mysql) |
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é
Marsh Posté le 21-06-2004 à 13:39:35
esox_ch a écrit : lol bizard ta rekette ayuget moi j'aurais plutot vu : |
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
Marsh Posté le 21-06-2004 à 13:59:39
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). |
Ben nan pas tout à fait...
Là, si un enfant n'est inscrit à aucun groupe, l'enregistrement ne sera pas retourné.
Marsh Posté le 21-06-2004 à 14:11:54
Ayuget a écrit : Ben nan pas tout à fait... |
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).
Marsh Posté le 21-06-2004 à 16:37:05
Ayuget 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...
Marsh Posté le 22-06-2004 à 10:19:59
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)
Marsh Posté le 22-06-2004 à 16:20:41
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
Marsh Posté le 20-06-2004 à 18:57:44
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???