accéder à un champs dans un résultat [PHP/MySQL] - Programmation
Marsh Posté le 07-06-2001 à 14:17:50
tu fais
select N.date_crea as date_notes, M.date_crea as membres_date from notes N, membre M .....
Marsh Posté le 07-06-2001 à 14:23:23
je me demandais à quoi pouvais bien servir les alias ))) j'ai ma réponse ))
Marsh Posté le 07-06-2001 à 14:43:06
ma requête fini par me sembler un tantinet compliquée non ???
$resultnotes = mysql_query("SELECT id_note, id_mat, id_mem, id_momnote, note, N.date_crea as date_crea_note, N.date_modif as date_modif_note, nom_note, M.date_crea as date_crea_mem, login, nom_mat FROM notes N, noms_notes, materiels, membres M where notes.id_nomnote = noms_notes.id_nomnote and notes.id_mat = materiels.id_mat and notes.id_mem = membres.id_mem order by materiels.id_mat", $db);
le pb, c'est que jusque là je faisais select * et là je suis obligé de sélectionné chaque champs...
en plus ça marche pas... c zarb...
Marsh Posté le 07-06-2001 à 14:54:20
le id_mat que tu selectionnes faut préciser si c un notes.id_mat ou un materiels.id_mat
tu sélectionnes un id_momnote qui doit etre un id_nomnote (notes.id_nomnite ou noms_notes.id_nomnote ?)
[edit]--Message édité par __Lolo__--[/edit]
Marsh Posté le 07-06-2001 à 14:54:47
Deja dans la clause where, utilise des alias de table plutot que le nom complet...
pis essaye un truc du genre
select table1.*, table2.* pour les tables ou t'as pas besoin de faire d'alias de champs... je suis pas sur que ca marche en MySQL mais tu peut tjrs essayer
Marsh Posté le 07-06-2001 à 15:01:56
__Lolo__ a écrit a écrit : bah non ms la il sait pas de kel table tu parles |
là par exemple :
SELECT * FROM materiels, sscategories, fabricants where materiels.id_fab = fabricants.id_fab and materiels.id_sscat = sscategories.id_sscat ORDER BY materiels.id_mat
je lui précise pas.... et pourtant ça marche... peut-être me sélectionne-t-il les deux id_sscat des deux tables puisque c'est * ???
alors je devrais utiliser select table1.*, table2.* (je viens de tester ça marche...)
Elcap
[edit]--Message édité par elcap--[/edit]
Marsh Posté le 07-06-2001 à 15:25:20
la t'as pas de problème vu que tu a le jointure sur le champ ... donc les 2 champs contiennent la meme chose...
Pour ne jamais avoir ce genre de pb, fait comme moi : je prefixe tout les noms de champ d'un identifiant de trois lettre correspondant a la table.
ex :
table1 ->tb1_id
table2 ->tb2_id
Marsh Posté le 07-06-2001 à 15:33:08
je crois que je vais effectivement passer par la modif de ma base de données... mais bon, c chiant et puis je me demandais si on pouvait faire autrement..... mais c'est plus propre de pas avoir de noms de champs identiques
Marsh Posté le 07-06-2001 à 15:44:58
moi on m'a dit de pas faire de select * en cours dc je fais pas ... (discipliné le lolo )
Marsh Posté le 07-06-2001 à 15:56:41
ben si tu as besoin de tout les champs.... pkoi pas faire de select ????
en plus moi on m'a jamais parlé d'informatique en cours ))
Marsh Posté le 07-06-2001 à 15:59:25
bah je fais un select ms pas * c tout
le truc c que qd tu fais select *
1- ca te dis pas ce que tu recuperes qd tu te relis
2- tu recuperes la plupart du temps des trucs qui t'interesse pas
Marsh Posté le 07-06-2001 à 16:05:03
Quand t'as besoin de tout les champs c quand même bien pratique de mettre *
si par contre t'as besoin de 5 champs et que le * t'en renvoi 50, c debile puisque ca bouffe du temps et le la memoire !
Et puis si tu prefixe les champs comme je le disais, tu sais ce que te renvoi * ...
Marsh Posté le 07-06-2001 à 16:06:06
__Lolo__ a écrit a écrit : bah je fais un select ms pas * c tout le truc c que qd tu fais select * 1- ca te dis pas ce que tu recuperes qd tu te relis 2- tu recuperes la plupart du temps des trucs qui t'interesse pas |
tu fais donc select from ??? ou tu lui donne systématiquement les noms des champs ?
2/ sauf quand tu as besoin de tout )) ce qui est souvent mon cas ces temps-ci avec mes petites tables )
Marsh Posté le 07-06-2001 à 16:08:50
ca je ne dis pas que c pas pratique ms c justement paske c pratique que c dangereux (comme souvent en info)
qd tu vois un select * dans un script t bien obligé d'aller voir sur la base ce que tu recuperes non ?
enfin bon c clair que quand t'as 50 champs (ca m'est jamais arrivé c ptet pr ca ) c plus rapide (feignasse powa !! )
elcap > oui je lui indique les colonnes a recuperer
[edit]--Message édité par __Lolo__--[/edit]
Marsh Posté le 07-06-2001 à 14:13:01
encore moi héhé )
voici ce que je fais :
$resultnotes = mysql_query("SELECT * FROM notes, noms_notes, materiels, membres where notes.id_nomnote = noms_notes.id_nomnote and notes.id_mat = materiels.id_mat and notes.id_mem = membres.id_mem order by materiels.id_mat", $db);
while( $rownotes = mysql_fetch_object($resultnotes) )
{
echo $rownotes->date_crea;
}
seulement, j'ai un champs date_crea dans ma table notes ET dans ma table membres.... comment lui imposer de ne m'afficher que l'un ou lautre ???
merci )
Elcap