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

 MySQL Discussion :

Addition de 2 tables


Sujet :

MySQL

  1. #1
    Candidat au Club
    Professor de Física Universidad UTESA
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : Professor de Física Universidad UTESA
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Addition de 2 tables
    Bonjour,
    J'ai 2 tables indépendantes sur la BDD
    - "public_vente" (pour la partie à vendre)
    - "public_location" (pour la partie location)
    et j'essai de faire une requete pour additionner le nombre d'annonces pour une ville (ex : San_Juan) pour la vente et la location réuni

    Actuellement j'ai ceci :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    $query=tep_db_query("select count(id) as num from public_vente where status='1' and ville='San_Juan'"); 
    $data=tep_db_fetch_array($query); 
    $num_general_San_Juan=$data['num']; 
     
    $query=tep_db_query("select count(id) as num from public_location where status='1' and ville='San_Juan'"); 
    $data=tep_db_fetch_array($query); 
    $num_general_San_Juan=$data['num']; 
    ?>

    "num" étant le nombre d'annonces sur le site.

    J'ai essayé JOIN mais ca marche pas :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    $query=tep_db_query("select count(id) as num from public_vente JOIN public_location where status='1' and ville='San_Juan'"); 
    $data=tep_db_fetch_array($query); 
    $num_general_San_Juan=$data['num']; 
    ?>

    Qui peut m'aider svp ? Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    étant donné que les Common Table Expression n'existent pas sous MySQL (à moins que cela ai changé) je suggère de passer par une VIEW
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE VIEW TEST
    AS 
    SELECT ID,STATUS,VILLE FROM public_vente
    UNION   
    SELECT ID,STATUS,VILLE FROM public_location
    pour passer ensuite par un SQL de ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(ID) FROM TEST WHERE status='1' and ville='San_Juan'
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Candidat au Club
    Professor de Física Universidad UTESA
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : Professor de Física Universidad UTESA
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut je dois avoir une erreur
    Salut Sergiomaster,

    Je dois avoir fait une erreur ou j'ai mal compris
    Dans la BDD, pour créer la nouvelle table de VIEW j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE VIEW `public` (
    AS SELECT `ID`,`STATUS`,`VILLE` FROM public_vente,
    UNION SELECT `ID`,`STATUS`,`VILLE` FROM public_location,
    KEY `public_id` (`public_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Mais ça me marque une erreur.

    Et pour le reste c'est bien ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    $query=tep_db_query("SELECT COUNT(ID)  as num FROM PUBLIC WHERE STATUS='1' AND VILLE='San_Juan'"); 
    $data=tep_db_fetch_array($query); 
    $num_general_San_Juan=$data['num']; 
    ?>
    Merci pour ton aide

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    hum , je connais pas bien MySQL , mais je dirais que le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KEY `public_id` (`public_id`)
    quant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ENGINE=MyISAM DEFAULT CHARSET=latin1;
    je sèche , ne maitrisant pas mySQL
    cependant , pour ce que tu veux en faire , je dirais que c'est inutile
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    une vue n'est pas une table.
    C'est une entité logique.

    Du coup (du moins sous MYSql) on ne peut y attacher des options de storage, ni de contrainte, ni d'index.


    Il faut plus le voir comme un "ALIAS" d'une requête.

  6. #6
    Candidat au Club
    Professor de Física Universidad UTESA
    Inscrit en
    Novembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Dominique Rep.

    Informations professionnelles :
    Activité : Professor de Física Universidad UTESA
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    ah ok punkoff
    J'ai donc mal compris ... Alors comment je peux faire ?
    Je pensais que c'etait un code assez simple à faire mais je suis largué là !

  7. #7
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 597
    Points : 886
    Points
    886
    Par défaut
    Salut.
    Si tu veux le résultat pour toutes les villes, il,me semble plus judicieux d'utiliser un GROUP BY :
    Code MYSQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ville, count(id) as num FROM public_vente where status='1' GROUP BY ville

    Ca pourrait donner quelque chose comme
    Code php : 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
    $resultat=array();
    $query_vente=tep_db_query("SELECT ville, count(id) as num FROM public_vente where status='1' GROUP BY ville'"); 
    while ($data_vente = tep_db_fetch_array($query_vente))
    	{
    	$resultat[$data_vente['ville']]=$data_vente['num'];
    	}
     
    $query_location=tep_db_query("SELECT ville, count(id) as num FROM public_location where status='1' GROUP BY ville'"); 
    while ($data_location = tep_db_fetch_array($query_location))
    	{
    	$resultat[$data_location['ville']].=$data_location['num'];
    	}
     
    // Visualisation des résultats
    foreach($resultat AS $key =>$value)
    	{
    	echo "<p>".$key." : ".$value."</p>";
    	}
    Participez vous aussi !
    Message utile
    Discussion résolue

Discussions similaires

  1. Addition sur 12 tables
    Par oluvius dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/03/2011, 02h21
  2. faire l'addition de différentes tables
    Par ledisciple dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/03/2011, 17h05
  3. Addition de plusieurs tables
    Par cactus2078 dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/05/2007, 16h16
  4. Réponses: 2
    Dernier message: 31/01/2007, 09h49

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