Organisation de ma (mes) tables ??

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 : Organisation de ma (mes) tables ??

par vins1892 » 22 avr. 2005, 09:09

salut, j'avance lentement, mais c'est un peu galère ...

J'ai redirigé ma question sur le forum débuter en php (cf topic http://www.phpfrance.com/forums/voir_su ... texte-.php).

Ton expérience pour le keno m'intéresse ... Ton aide est le bienvenu ...

7 koi ton site ?

A bientôt,

par BadFox » 21 avr. 2005, 17:00

salut,
alors tu t'en es sorti ? paske pr moi après avoir galéré un peu une semaine j'ai fini par trouver et me faire de bonnes requêtes et algos afin que ça fonctionne nickel mais pr le keno.

par Hubert Roksor » 04 avr. 2005, 17:09

Je ne peux rien te promettre mais tu peux me les envoyer si tu veux, j'essaerai de les regarder.

par vins1892 » 04 avr. 2005, 16:08

La requête s'exécute, mais ne ramène rien alors qu'il doit y avoir un résultat ...

J'peux t'envoyer le sql file qui créé les tables et leur contenu en mp?

par Hubert Roksor » 04 avr. 2005, 15:55

Question: la table temporaire doit-elle apparaître dans la lsite de mes tables de ma db ?
Je pense que oui mais il y a une astuce: les tables temporaires disparaissent à l'instant où ta connexion se termine, ce qui signifie que si tu utilises phpMyAdmin et que tu exécutes les requêtes séparemment la table aura disparu entre les deux requêtes. Il faut exécuter les deux requêtes dans la même page:

Code : Tout sélectionner

CREATE TEMPORARY TABLE temp SELECT dtirage, COUNT(*) AS bons_numeros FROM tirage_tbl WHERE num IN (1, 2, 3, 4, 5, 6) GROUP BY dtirage HAVING bons_numeros >= 3; SELECT COUNT(*) AS tirages, bons_numeros FROM temp GROUP BY bons_numeros

par vins1892 » 04 avr. 2005, 15:51

c'est ce que j'ai fait. La 1ère s'exécute correctement.

Par contre, pour la 2ème, il me dit que la table n'est pas créée ...

Question: la table temporaire doit-elle apparaître dans la lsite de mes tables de ma db ? Ce n'est pas le cas dans l'exemple ci-dessus ... bien qu'il me dise que la requête sql a été correctement exécutée ...

par Hubert Roksor » 04 avr. 2005, 14:06

je dois créer une table temporaire du style [...]
Inutile de la définir explicitement, tu peux créer une table à partir d'un SELECT avec la syntax CREATE TABLE ... SELECT

Exécute les deux requêtes plus haut exactement comme je les ai postées, ça devrait marcher.

par vins1892 » 04 avr. 2005, 12:53

Si je comprends bien, je dois créer une table temporaire du style:

CREATE TEMPORARY TABLE temp (id INT not null auto_increment,dtirage DATE not null,num INT not null,primary key (id));

Ensuite:

INSERT INTO temp (
SELECT dtirage, COUNT(*) AS bons_numeros
FROM numero
WHERE num IN ( 1, 2, 3, 4, 5, 6 )
GROUP BY dtirage
HAVING bons_numeros >= 3
);

Ca ne marche pas, il me dit que ma table n'existe pas ?

PS: J'suis débutant mysql, soyez indulgent ...

par Hubert Roksor » 03 avr. 2005, 18:29

Tu dois pouvoir remplacer la table dérivée (le SELECT que tu vois dans la liste des tables) par une table temporaire:

Code : Tout sélectionner

CREATE TEMPORARY TABLE temp SELECT dtirage, COUNT(*) AS bons_numeros FROM tirage_tbl WHERE num IN ( 1, 2, 3, 4, 5, 6 ) GROUP BY dtirage HAVING bons_numeros >= 3

Code : Tout sélectionner

SELECT COUNT(*) AS tirages, bons_numeros FROM temp GROUP BY bons_numeros
NOTE: je n'ai pas lu le reste du thread (je n'ai lu que les 3 derniers posts :roll:) donc si je suis hors-sujet je m'en excuse. Les requêtes ci-dessus permettent de récupérer le nombres de tirages ayant offert 3 bons numéros ou plus, classés par nombre de bons numéros. La requête citée plus haut ne donnent que ceux ayant offert 3 bons numéros exactement.

par vins1892 » 03 avr. 2005, 14:34

Bon, mon hébergeur ne propose que la version 4.0.22 de mysql, peut-être est-ce le problème.

Question::

- pas possible de développer une requête qui ne demande de pas de sous-requête?

Si non, je me tourne vers un autre hébergeur (gratuit ou payant) ....

par vins1892 » 01 avr. 2005, 13:17

Bon, je teste sur une version 4 de mysql et toujours même problème:

La 1ère requête est ok:

SELECT dtirage, count( num ) AS bons_numeros
FROM tirage_tbl
WHERE num
IN ( 1, 2, 3, 4, 5, 6 )
GROUP BY dtirage
HAVING count( num ) =3

Mais la sous-requête ramène une erreur de sytnaxe ...

PS: je peux joindre un fichier pour la création des tables et leur contenu pour tester chez vous ...

Merci pour votre aide.

par sadeq » 31 mars 2005, 10:41

Dans la requête :
$sql ="
SELECT count( temp.* ) AS tirages, temp.bons_numeros
FROM (
SELECT dtirage, count( num ) AS bons_numeros
FROM tirage_tbl
WHERE num
IN ( 1, 2, 3, 4, 5, 6 )
GROUP BY dtirage
HAVING count( num ) =3
) AS temp
GROUP BY temp.bons_numeros
";

Ce qui est important pour PHP c'est les champs dans le premier SELECT.
PHP récupère normalement ces champs et les traite.
PHP ne se soucit pas du type de la requête c'est mysql qui l'exécute et renvoi le résultat à PHP.

par vins1892 » 31 mars 2005, 08:55

Ok, mais ma question était plutôt: cela vaut-il la peine de faire une requête sql avec une sous-requête sans être certain certain que celle-ci sera interprétable en php en utilisant cette requête simplement comme variable ?

par Crulaz » 30 mars 2005, 20:32

Ces sous-requêtes sont supportées par php ?
On s'en fout de la version du php. C'est celle du mysql qui compte.

par vins1892 » 30 mars 2005, 17:28

Ces sous-requêtes sont supportées par php ?

Je m'explique: si je nomme ma requête sql en $sql et que j'utilise cette variable dans mon code php, elle sera interpétée correctement ?

Si oui, je vais télécharger la dernière version de mysql ...