SQL - Faire des totaux avec 2 bases de données
Résolu/Fermé
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
-
30 avril 2015 à 20:02
SLM-BHY Messages postés 28 Date d'inscription vendredi 21 décembre 2012 Statut Membre Dernière intervention 7 mai 2015 - 7 mai 2015 à 01:53
SLM-BHY Messages postés 28 Date d'inscription vendredi 21 décembre 2012 Statut Membre Dernière intervention 7 mai 2015 - 7 mai 2015 à 01:53
A voir également:
- SQL - Faire des totaux avec 2 bases de données
- Word numéro de page 1/2 - Guide
- Reinstaller windows sans perte de données - Guide
- Whatsapp avec 2 cartes sim - Guide
- Effacer les données de navigation - Guide
- Excel validation des données liste - Guide
5 réponses
Utilisateur anonyme
30 avril 2015 à 21:38
30 avril 2015 à 21:38
Bonjour
Ce qui ce passe, c'est que 'From tbl_voiture, tbl_detailvoiture' ne signifie pas "d'abord avec la table tbl_voiture, puis avec la table tbl_detailvoiture" mais "avec toutes les combinaisons possibles de toutes les lignes de tbl_voiture avec chaque ligne de tbl_detailvoiture".
Si une des tables a 20 lignes et l'autre 30, ça ne va pas faire 50 lignes en tout, mais 600.
Ceci étant dit, ça doit être possible avec une requête UNION, je sais que ça existe mais je ne maîtrise pas assez pour te donner une réponse plus précise.
Ce qui ce passe, c'est que 'From tbl_voiture, tbl_detailvoiture' ne signifie pas "d'abord avec la table tbl_voiture, puis avec la table tbl_detailvoiture" mais "avec toutes les combinaisons possibles de toutes les lignes de tbl_voiture avec chaque ligne de tbl_detailvoiture".
Si une des tables a 20 lignes et l'autre 30, ça ne va pas faire 50 lignes en tout, mais 600.
Ceci étant dit, ça doit être possible avec une requête UNION, je sais que ça existe mais je ne maîtrise pas assez pour te donner une réponse plus précise.
jee pee
Messages postés
40463
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
20 novembre 2024
9 422
Modifié par jee pee le 30/04/2015 à 22:49
Modifié par jee pee le 30/04/2015 à 22:49
Bonjour,
Si je reprends ton titre c'est plutôt "avec 2 tables" donc.
Le sql n'est pas idéal pour additionner les choux et les carottes. Pour cela des outils (requéteurs) plus sophistiqués sont utilisés.
En sql on peut utiliser, comme le signale le père, des artifices comme l'union. Mais il faut que les colonnes des 2 select correspondent.
Exemple
Dans le cas présent nous n'avons pas assez d'éléments pour te guider. Que vois tu comme état de sortie, que contiennent les tables et leurs liens ?
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Si je reprends ton titre c'est plutôt "avec 2 tables" donc.
Le sql n'est pas idéal pour additionner les choux et les carottes. Pour cela des outils (requéteurs) plus sophistiqués sont utilisés.
En sql on peut utiliser, comme le signale le père, des artifices comme l'union. Mais il faut que les colonnes des 2 select correspondent.
Exemple
select 'table A' Dans, count(*) nb_enr from tableA union select 'table B' Dans, count(*) nb_enr from tableB
Dans le cas présent nous n'avons pas assez d'éléments pour te guider. Que vois tu comme état de sortie, que contiennent les tables et leurs liens ?
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
4 mai 2015 à 14:56
4 mai 2015 à 14:56
Bonjour,
je vous remercie pour vos réponses.
J'ai une première table qui contient énormément d'information sur l'ouverture d'un bon de travail d'une voiture.
Par exemple on a le code du bon de travail (CODE_WORKORDER), Statut du bon de travail (STATUS), le code voiture (ex voiture 43) (CODE_EQUIPMENT), le type d'anomalie (CODE_ANOMALIE), vandalisme (oui/non) (WOB1), les dates de création et clôture du bon de travail (CREATIONDATE, MODIFICATIONDATE...), le site (Paris, Rennes...) (CODE_SITE), ....
Dans ma seconde table, qui d'ailleurs est très petite, j'ai uniquement des informations concernant la cause d'anomalie, (colonne "CAUSE") et la solution apportée (colonne "REMEDY").
La clé étrangère (il me semble que c'est le nom) qui relie les deux tables sont le Code du bon de travail (CODE_WORKORDER) et le site (CODE_SITE).
Ce que j'aimerai faire c'est avoir sur le même tableau :
- le nombre de BT créé sur une période
- le nombre de BT terminé sur une période
- Le nombre de BT ayant comme CAUSE "Pneu crevé" sur une période
- Le nombre de BT ayant comme CAUSE "xxxx" .... sur une période
Donc voila, individuellement je n'ai aucun soucis à retrouver les valeurs de chaque indicateur (total). Mais dès que j'essaie d'effectuer mes calculs dans le même rapport je n'y arrive plus (croisement des deux tables).
Pour répondre à ce que vous me conseillé, je dois donc utiliser l'union mais comment puis-je m'y prendre ? Dois-je dans un premier temps faire toutes mes "SUM" de la même table puis faire un UNION et faire toutes mes "SUM" issues de la seconde table ?
Voici un exemple de ce que je fais :
Donc ces trois calcul je les mets directement dans mon select. Les deux premiers sont issus de la première table est fonctionnent correctement. Dès que je rajoute le troisième calcul (qui doit piocher des infos de la seconde table) tous mes calcul sont faussés.
je vous remercie pour vos réponses.
J'ai une première table qui contient énormément d'information sur l'ouverture d'un bon de travail d'une voiture.
Par exemple on a le code du bon de travail (CODE_WORKORDER), Statut du bon de travail (STATUS), le code voiture (ex voiture 43) (CODE_EQUIPMENT), le type d'anomalie (CODE_ANOMALIE), vandalisme (oui/non) (WOB1), les dates de création et clôture du bon de travail (CREATIONDATE, MODIFICATIONDATE...), le site (Paris, Rennes...) (CODE_SITE), ....
Dans ma seconde table, qui d'ailleurs est très petite, j'ai uniquement des informations concernant la cause d'anomalie, (colonne "CAUSE") et la solution apportée (colonne "REMEDY").
La clé étrangère (il me semble que c'est le nom) qui relie les deux tables sont le Code du bon de travail (CODE_WORKORDER) et le site (CODE_SITE).
Ce que j'aimerai faire c'est avoir sur le même tableau :
- le nombre de BT créé sur une période
- le nombre de BT terminé sur une période
- Le nombre de BT ayant comme CAUSE "Pneu crevé" sur une période
- Le nombre de BT ayant comme CAUSE "xxxx" .... sur une période
Donc voila, individuellement je n'ai aucun soucis à retrouver les valeurs de chaque indicateur (total). Mais dès que j'essaie d'effectuer mes calculs dans le même rapport je n'y arrive plus (croisement des deux tables).
Pour répondre à ce que vous me conseillé, je dois donc utiliser l'union mais comment puis-je m'y prendre ? Dois-je dans un premier temps faire toutes mes "SUM" de la même table puis faire un UNION et faire toutes mes "SUM" issues de la seconde table ?
Voici un exemple de ce que je fais :
sum(case when CODE_EQUIPMENT = "VOITURE" and Status != "40-Annulé" and (bt.creationdate between $P{DATEDEBUT} and $P{DATEFIN}) then 1 else 0 end) as btvoiturecrees, sum(case when CODE_EQUIPMENT = "VOITURE" and WOB1 = 1 and (bt.CREATIONDATE between $P{DATEDEBUT} and $P{DATEFIN}) then 1 else 0 end) as btvoiturevandal, sum(case when CODE_EQUIPMENT = "VOITURE" and Status = "30-Terminé" and Remedy = "CHANGEMENT PNEU" and (bt.STATUSDATE between $P{DATEDEBUT} and $P{DATEFIN}) then 1 else 0 end) as btvoiturepneu,
Donc ces trois calcul je les mets directement dans mon select. Les deux premiers sont issus de la première table est fonctionnent correctement. Dès que je rajoute le troisième calcul (qui doit piocher des infos de la seconde table) tous mes calcul sont faussés.
jee pee
Messages postés
40463
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
20 novembre 2024
9 422
Modifié par jee pee le 4/05/2015 à 19:01
Modifié par jee pee le 4/05/2015 à 19:01
Si le résultat du select sur chacune des 2 tables n'est qu'une seule ligne, le produit cartésien donnant toujours 1, tu pourrais faire un
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
select * from (select sum ... from tbl_voiture), (select sum ... from tbl_detailvoiture)
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
5 mai 2015 à 21:00
5 mai 2015 à 21:00
Bonjour Jee pee,
Merci de ta réponse, je teste ça tout de suite.
Je te tiens au courant.
Merci de ta réponse, je teste ça tout de suite.
Je te tiens au courant.
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
5 mai 2015 à 21:16
5 mai 2015 à 21:16
Je viens de faire les tests est malheureusement ça ne fonctionne pas...
Ci-dessous ce que j'ai fait :
Ci-dessous ce que j'ai fait :
SELECT * FROM (select (sum tbl_voiture.CODE_WORKORDER) from tbl_voiture)
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
>
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
5 mai 2015 à 21:49
5 mai 2015 à 21:49
Bonjour
les parenthèses ne sont pas bien placées.
les parenthèses ne sont pas bien placées.
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
5 mai 2015 à 22:13
5 mai 2015 à 22:13
Désolé, je n'y arrive pas...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
5 mai 2015 à 22:34
5 mai 2015 à 22:34
SELECT * FROM (SELECT SUM (tonchamp) as somme FROM tatable )T1 , (SELECT SUM (autrechamp) AS TOTO FROM tabletruc )T2
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
5 mai 2015 à 23:55
5 mai 2015 à 23:55
Je te remercie énormément Jordane45, j'ai enfin réussi à faire ce que je souhaitais !! J'ai fait 2 - 3 tests, ça à l'air correct. Demain je terminerai ma requête et je t'en dirait des nouvelles !
Tu as réussi à me sortir d'une galère !!! Encore merci :).
Tu as réussi à me sortir d'une galère !!! Encore merci :).
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
>
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
6 mai 2015 à 00:01
6 mai 2015 à 00:01
De rien. .. mais c'est jee pee qui t'a proposé la solluce :-)
Pense à clôturer la discussion si ton souci est résolu.
Pense à clôturer la discussion si ton souci est résolu.
SLM-BHY
Messages postés
28
Date d'inscription
vendredi 21 décembre 2012
Statut
Membre
Dernière intervention
7 mai 2015
7 mai 2015 à 01:53
7 mai 2015 à 01:53
Effectivement, merci Jee pee !! :).
Je viens de finir l'ensemble de la requête, demain je fais mes vérifications et si tout me semble correcte je clôture la discussion directement. Cela m'éviterai de recréer une discussion si jamais je vois une coquille...
Je viens de finir l'ensemble de la requête, demain je fais mes vérifications et si tout me semble correcte je clôture la discussion directement. Cela m'éviterai de recréer une discussion si jamais je vois une coquille...