SELECT sur plusieurs tables à la fois

SELECT sur plusieurs tables à la fois - SQL/NoSQL - Programmation

Marsh Posté le 09-11-2005 à 18:56:18    


Bonjour, est il possible de faire un SELECT sur plusieurs tables a la fois dans la même requete, dans l'idée, qqchose comme ça (qui ne marche pas) :  
SELECT DISTINCT debit INTO OUTFILE "debit.csv" FROM semaine39_total OR FROM semaine38_total
 
ou alors (ce qui reviendrait sensiblement au même pour moi), de continuer le fichier "OUTFILE" au lieu d'en créer a chaque fois un nouveau dans la requete suivante.
 
 
merci

Reply

Marsh Posté le 09-11-2005 à 18:56:18   

Reply

Marsh Posté le 09-11-2005 à 20:36:54    

si tes deux tables ont le meme champ, tu peux faire
 
SELECT champ FROM table1
UNION
SELECT champ FROM table2;
 
je sais plus si tu auras des doublons ou pas


---------------
The Rom's, à votre service
Reply

Marsh Posté le 10-11-2005 à 08:26:39    

La syntaxe exacte est celle ci :
 

Code :
  1. SELECT
  2. TicketsUnion.*
  3. FROM
  4. (
  5. SELECT * FROM Ticket1
  6. UNION ALL
  7. SELECT * FROM Ticket2
  8. ) TicketsUnion


Reply

Marsh Posté le 10-11-2005 à 09:03:21    

TheRom_S a écrit :

si tes deux tables ont le meme champ, tu peux faire
 
SELECT champ FROM table1
UNION
SELECT champ FROM table2;
 
je sais plus si tu auras des doublons ou pas


le UNION dedoublonne

Reply

Marsh Posté le 10-11-2005 à 16:20:13    

bjr
 
a tous merci pour vos reponse, whyme je ne comprend pas cette syntaxe. Le fait d'avoir un truc du genre SELECT FROM SELECT je pige pas.
 
je voudrais ça :
 
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine01` WHERE `reference` LIKE '52136%' OR `reference` LIKE (etc...) GROUP BY `mois`,`reference`,`debit`
UNION
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine02` WHERE `refernce` LIKE '52136%' OR `reference` LIKE (etc...) GROUP BY `mois`,`reference`,`debit`
UNION
(etc)
 
et ben ça marche paaaaas  :cry:  
 
je précise que chaque SELECT lancé tout seul marche très bien. Il me bloque a la 2e ligne reliée par UNION
 
sur http://dev.mysql.com/doc/refman/5.0/fr/union.html
 
je lis que UNION est implémentée en MySQL 4.0.0.
 
je me dis : aurais je une vieille version ?
 
je vois sur l'écran d'accueil :
Bienvenue à phpMyAdmin 2.2.6
MySQL 3.23.49-max-nt sur le serveur localhost - utilisateur : root@localhost
 
 
Je charge et installe la version 5.0, redemarre mais ça le fais pas plus
 
et ça m'affiche toujours MySQL 3.23.49-
 
bouuuuh

Message cité 1 fois
Message édité par Gilgamesh d'Uruk le 10-11-2005 à 17:46:22
Reply

Marsh Posté le 10-11-2005 à 16:24:13    

Gilgamesh d'Uruk a écrit :

bjr
 
whyme merci pour ta reponse, mais je ne comprend pas cette syntaxe. Le fait d'avoir un truc du genre SELECT FROM SELECT je pige pas.
 
je voudrais ça :
 
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine01` WHERE `reference` LIKE '52136%' OR `reference` LIKE (etc...) GROUP BY `mois`,`reference`,`debit`
UNION
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine02` WHERE `refernce` LIKE '52136%' OR `reference` LIKE (etc...) GROUP BY `mois`,`reference`,`debit`
UNION
(etc)
 
et ben ça marche paaaaas  :cry:  
 
je précise que chaque SELECT lancé tout seul marche très bien. Il me bloque a la 2e ligne reliée par UNION
 
sur http://dev.mysql.com/doc/refman/5.0/fr/union.html
 
je lis que UNION est implémentée en MySQL 4.0.0.
 
je me dis : aurais je une vieille version ?
 
je vois sur l'écran d'accueil :
Bienvenue à phpMyAdmin 2.2.6
MySQL 3.23.49-max-nt sur le serveur localhost - utilisateur : root@localhost
 
 
Je charge et installe la version 5.0, redemarre mais ça le fais pas plus
 
et ça m'affiche toujours MySQL 3.23.49-
 
bouuuuh


 
Essayes ca :
 
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine01` WHERE `reference` LIKE '52136%' OR `reference` LIKE (etc...)  
UNION  
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine02` WHERE `refernce` LIKE '52136%' OR `reference` LIKE (etc...)  
 
GROUP BY `mois`,`reference`,`debit`  

Reply

Marsh Posté le 10-11-2005 à 17:01:06    

Tamahome a écrit :

Essayes ca :
 
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine01` WHERE `reference` LIKE '52136%' OR `reference` LIKE (etc...)  
UNION  
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semaine02` WHERE `refernce` LIKE '52136%' OR `reference` LIKE (etc...)  
 
GROUP BY `mois`,`reference`,`debit`


 
 
Merci méééé non ça marche pas et les UNION les plus simple non plus genre SELECT 3 UNION SELECTION  -2 ça me renvoit un something wrong. Quasiment sur que c'est un pb de version. MySQL ver 5 est installée mais l'appli tourne sur une ancienne version (qui n'apparait pas dans le installer/desinstakller du panneau de config grrrrr)
 
Sinon, la bonne syntaxe -en principe si j'en crois les tutoriaux- c'est de mettre le GROUP BY "dans" le SELECT
 
a+

Reply

Marsh Posté le 10-11-2005 à 17:43:37    

Boooooon ! C'était bien un pb de version. J'ai résinstallé EasyPHP (ver 1.7) et ça tourne sur une version SQL 4.x donc qui accepte ma syntaxe.  
 
 
Donc pour info ça ressemble à ça :
 
SELECT `debit`,`reference`,`mois`,SUM(quantite) FROM `semaine01` WHERE `reference` LIKE '98754%' OR `reference` LIKE (etc...) GROUP BY `mois`,`reference`,`debit`
UNION  
SELECT `debit`,`reference`,`mois`,SUM(quantite) FROM `semaine02` WHERE `reference` LIKE '98754%' OR `reference` LIKE (etc...) GROUP BY `mois`,`reference`,`debit`
UNION
 
etc
 
SELECT `debit`,`reference`,`mois`,SUM(quantite) INTO OUTFILE 'resultat.csv' FROM `semainen` WHERE `reference` LIKE '98754%' OR `reference` LIKE (etc...) GROUP BY `mois`,`reference`,`debit`
 
le into outfile est bien a mettre dans le dernier SELECT
 
a+


Message édité par Gilgamesh d'Uruk le 10-11-2005 à 17:44:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed