IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Pb Trie sur 2 tables differentes


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut Pb Trie sur 2 tables differentes
    Bonjour,

    Voila, je me retrouve avec 2 tables

    TABLE A
    ID|champ 1|champ 2|champ 3|date|


    TABLE B
    ID|champ 1|champ 2|date|

    Je veux faire un trie sur ces 2 tables en même temps pour recupérer le plus récent ID en fonction de la date.
    Le souci c'est que les tables sont différentes et je ne peux pas faire d'UNION.

    Auriez vous une solution?

    Merci d'avance

    Stéphane

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Quand tu écris TRI, tu penses probablement classement.
    Date comme nom de colonne n'est pas un choix judicieux car c'est un mot réservé de SQL.
    Pour faire l'UNION entre les deux tables tu peux le faire en ne nommant que les colonnes correspondantes dans les deux SELECT.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    Merci pour la réponse

    Les nom utilisé ne sont que des exemples, mes champs ne se nomme pas comme ça. En gros, je voudrais réunir les date avec toutes les informations des 2 tables, les trier par date et recupérer le produit le plus récent.

    Le but:
    J'ai un site qui présente la dernière nouveauté sauf que les données peuvent êtres différent en fonction de ce produit.

  4. #4
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Et peut-on voir le résultat d'un SHOW CREATE TABLE sur chacune des tables ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    Premiere table

    CREATE TABLE `tab008_fichiers` (
    `Fichier_id` smallint(6) NOT NULL AUTO_INCREMENT,
    `Fichier_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `Fichier_nom` varchar(50) CHARACTER SET latin1 NOT NULL,
    `Fichier_taille` tinyint(4) NOT NULL,
    `Fichier_type` varchar(15) CHARACTER SET latin1 NOT NULL,
    `Fichier_desc` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
    PRIMARY KEY (`Fichier_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
    Deuxieme table

    CREATE TABLE `tab006_models3d` (
    `Model_id` mediumint(9) NOT NULL AUTO_INCREMENT,
    `Model_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `Utilisateur_id` smallint(6) NOT NULL,
    `Model_titre` varchar(100) CHARACTER SET latin1 NOT NULL,
    `Model_logiciel` varchar(50) CHARACTER SET latin1 NOT NULL,
    `Model_desc` varchar(255) CHARACTER SET latin1 NOT NULL,
    PRIMARY KEY (`Model_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

  6. #6
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Essayons comme cela
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT * FROM(SELECT `Fichier_id` AS id,
           `Fichier_date` AS jour,
           `Fichier_nom` AS nom,
           "utilisateur" AS u_id,
           `Fichier_taille`,
            "titre" as titre
           `Fichier_type` AS type,
           "logiciel" as logiciel,
           `Fichier_desc` AS dscript
    FROM `tab008_fichiers`
    UNION ALL
    SELECT `Model_id`,
           `Model_date`,
           "nom",
           `Utilisateur_id`,
           "taille",
           `Model_titre`,
           "type"
           `Model_logiciel`,
           `Model_desc`
    FROM `tab006_models3d`) as t
    ORDER BY t.jour DESC LIMIT 1
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    Oula, a se que je vois, j'ai encore pas mal a apprendre dans le langage SQL. Si je comprend bien tu attribut des noms aux informations collectées de chaque table pour les indexer dans un tableau. Après j'ai du mal à déchiffrer mais c'est certainement dus a mon manque d’expérience. J’essaie la requête et je te tiens au courant.

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    La requete marche sur phpmyadmin. je recupere bien la données voulu. Pour faire la difference entre un fichier et un modele je metterais un champs vide.
    Par contre quand je l'execute sur php avec mysql_fetch_array, ca ne marche pas... Je comprend pas trop pourquoi..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $requete_test = "SELECT * FROM(
    SELECT `Fichier_id` AS id,
     `Fichier_date` AS jour,
    `Fichier_nom` AS nom,
    'utilisateur' AS u_id,
    `Fichier_taille`,
    'titre' AS titre,
    `Fichier_type` AS type,
    'logiciel' AS logiciel,
    `Fichier_desc` AS dscript 
    FROM `tab008_fichiers`UNION ALL SELECT `Model_id`,
    `Model_date`,
    'nom',
    `Utilisateur_id`,
    'taille',
    `Model_titre`,
    'type',
    Model_logiciel`,
    `Model_desc` FROM `tab006_models3d`) AS t ORDER BY t.jour DESC LIMIT 1";
     
    $resultat_test = mysql_query($requete_test);
    $stest=mysql_fetch_array($resultat_test);
    echo $stest['nom'];

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    Il paraitrait que php ne gère pas les requêtes imbriqué. Peut-on faire autrement pour que la requête passe avec la fonction php?

  10. #10
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Ce n'est pas un problème PHP, c'est un problème lié à la version de MySQL.
    Mais comme tu dis que la requête tourne sous phpMyAdmin (qui est une application écrite en PHP), je ne comprends pas grand chose à ton post.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    désolé pour le retard,

    Lorsque j’exécute la requête avec la fonction php "mysql_fetch_array()" sur une page php, ca me met un message d'erreur. hors sur phpmyadmin ca fonctionne bien. personnellement je comprend pas.

    Pour faire un test j'ai fait un echo de la requete dans ma page php. la requête s'affiche bien mais le message d'erreur apparait lors de mysql_fetch-array. Pour être sur de la requête, J'ai copier le résultat qui s’affiche sur ma page puis je les copier dans le champs SQL phpmyadmin et çà fonctionne.

    Peut être que c'est une autre fonction php utilisé par phpmyadmin qui exécute la tache.

    Pourtant sur les autres requêtes de mon site ca fonctionne très bien..

  12. #12
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    je te conseille d'ajouter or die(mysql_error()) derrière $resultat_test = mysql_query($requete_test) afin de voir si l'erreur provient de la soumission de la requête à MySQL par PHP.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    ok merci pour ta réponse et ta patience,

    Se qui est déjà bien c'est que la requête SQL marche bien et ca répond tout a fais à se que je demandé. maintenant, il manque plus qu'a trouver cette petite erreur.

    je testerai demain pour vérifier. J'utilise comme simulateur local easyphp avec la dernière version de phpmyadmin. Je ne pense pas que ça vienne du serveur.

    Merci encore

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    Salut,

    voici le message que ca me donne

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in E:\WEBMASTER\PixmodelsV4_2011\FTP server\www\index.php on line 33
    Erreur de syntaxe pr�s de 'Model_desc` FROM `tab006_models3d`) AS t ORDER BY t.jour DESC LIMIT 1' � la ligne 2

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    Ah finalement j'ai trouver l'erreur. C'était une erreur dans les espaces et les sauts de ligne de la requête dans le code de la page. Bizarre qu'en ayant fait un copier/coller dans phpmyadmin ca marche. Bref, des fois on cherche compliqué alors que l'erreur est si simple .

  16. #16
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Donc tu peux marquer le post comme résolu ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  17. #17
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Par défaut
    Désolé,

    Merci encore pour ton aide

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/06/2010, 23h57
  2. requete sur 2 table de 2 bases differentes
    Par nabelou1 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/12/2009, 12h39
  3. COUNT sur une table differente.
    Par Havocks dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/07/2008, 16h27
  4. Réponses: 3
    Dernier message: 03/10/2007, 14h04
  5. Réponses: 14
    Dernier message: 04/12/2006, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo