[Mysql] - Structures de tables / requête complexe - enfin complexe pour moi ^^

Erf, les tableaux php :’(

PS : "La seconde est plus lourde " Vs "la seconde est un peu mieux"

je dois croire qui là dedans ? :smiley:

bon si les tableaux en php c’est trop chiant pour toi, tu peux faire ca autrement avec deux boucles

premiere boucle affichant une ligne par bagnole dans un tableau sauf la derniere colonne, et quand arrive la derniere colonne tu fais une deuxieme boucle réalisant une concaténation des infos que tu recherches dans la deuxieme table dans la derniere colonne puis tu passes à la seconde ligne.

C’est ma première solution ça. Mais si tu as 15000 voitures, et seulement 5 voitures avec avaries, tu vas le sentir passer.

oui mais rien ne l’empêche de faire un truc comme ca :


SELECT table1.*, (SELECT COUNT(id) from table2 where table2.idbagnole=table1.id) as nb_avaries from table1, table2

et de ne déclancher une récupération quand nb_avaries >= 1

je viens de le simuler sur deux de mes tables et voici ce que me dit explain analyse :

le coût est minime.

Je n’ai que des voitures avec avaries, c’est un logiciel de suivi des avaries ^^

Par contre elles peuvent avoir potentiellement plusieurs avaries désormais, c’est là où mes affaires deviennent compliquées pour moi ^^

ben tu n’as pas mille solutions alors :neutre:

voiture puis avaries donc (une boucle imbriquées dans l’autre)

Avec éventuellement un champ indiquant si la voiture a une (ou plusieurs) avarie ou non, pour éviter le COUNT.

ok une boucle dans l’autre je sais faire ca ^^ Au pire c’est une application qui tourne sur un PC en local, donc bon si c’est pas ultra optimisé ya quand même jamais qu’une personne dessus à la fois :smiley:

Ce n’est pas une raison pour faire du code bourrin, c’est même une mauvaise habitude à oublier.

Oui mais bon on fait avec ce qu’on a.

N’étant pas un génie en la matière, je fais avec les moyens du bord. J’arrive à “reverse engineerer” les morceaux de code qu’on me donne pour les réutiliser par la suite, mais inventer de 0 des requêtes SQL alors que je connais tout juste le SELECT et le UPDATE de base ca me semble difficile :slight_smile:

Sans parler des traitements en php dont j’ai encore moins d’idée sur comment les faire :smiley:

Sauf si je me trompe, mais si tu pose des questions ici c’est pour apprendre, non? :slight_smile:

Voui apprendre oui, pas inventer ^^ “faire des traitement en php” ca revient à dire à qqn qui sait pas lire : faut lire de gauche à droite pour comprendre ^^ il sait pas lire d’avantage avec cette info :smiley:

Parce qu’on ne t’a pas dis assez ce qu’il fallait faire?

Faire des requêtes “imbriquées” en php, c’est pas difficile, non? Tu sais bien faire une requête en y injectant une variable php? donc …

Mais tu sais pas sans-nom ? J’aime jouer au crétin pour faire poster 150 fois la même réponse aux gens.

Tu considères qu’expliquer la “philosophie” d’un fonctionnement est suffisant pour que les gens puissent faire ce dont ils ont besoin, c’est ta méthode pédagogique, elle n’engage que toi. Tu mets de la bonne volonté pour aider, c’est pas le soucis, mais envisage que ce que tu dis n’est pas forcément suffisant !

Donc non je poste pas ici pour “apprendre”, je poste parce que j’ai besoin d’une réponse à une question en vérité, c’est la motivation première quand on pose une question en général : avoir la réponse :wink:

Comme tous ceux qui ne sont ni naturellement doués de la compréhension des saintes arcanes du php, ni n’ont suivi de formation en la matière et bien j’ai besoin d’un morceau de code concrêt.

Je tente de comprendre ce qu’il fait, je me l’approprie, et ensuite je le réutilise quand j’ai besoin (donc en effet j’apprends au final, histoire de pas perdre mon / votre temps à reposer la question).

Un peu comme ce truc là que m’a montré kiss :

$var = ( array_key_exists("var",$_POST) && is_numeric($_GET["var"]) ) ? int($_GET["var"] : null;

Bon ben voilà, j’ai remplacé mes isset par ce truc là, effectivement ca fonctionne mieux, plus besoin d’y revenir (enfin tu vas probablement me dire qu’on peut faire mieux, mais bon :D).

Saluton,
Tu devrais regarder du côté de la fonction GROUP_CONCAT de MySQL.

humm

Je considère surtout que lorsqu’on veut travailler dans un tel langage, x ou y, la moindre des choses c’est d’essayer de le comprendre un minimum :slight_smile: je te demande pas de pondre des algorithmes de fou, mais faire une boucle sur un résultat SQL, c’est grosso modo 25% des codes qui traînent sur le web…