Accueil > Forum > > > > Select avec résultat induit
Select avec résultat induit
vendredi 20 février 2009 à 14:29:29 |
Select avec résultat induit

Djzlouk
|
Bonjour les SQLeux :) J'ai un petit souci avec 2 tables. Je vous explique. Table Prevu : IdUserTemps Table Realise : IdUserTemps J'ai aussi des liens : Prevu.Id = Realise.Id Prevu.User = Realise.Id Dans ma table Prevu j'ai 444 enregistrements et dans ma table Realise j'ai 148 enregistrements. En réalité, dans ma table Prevu, je renseigne tout ce que je prévois de travailler et dans ma table realise c'est ce que j'ai réellement pointé. C'est pour cela que j'ai moins d'enregistrement dans la table realise. Ma problématique est simple, je veux connaitre ma charge, donc (Prevu.Temps - Realise.Temps) = Charge. Ce que j'ai fait c'est : SELECT (Prevu.Temps - Realise.Temps) AS Charge FROM Prevu JOIN Realise WHERE Prevu.Id = Realise.Id AND Prevu.User = Realise.Id Mais cela me retourne que 148 resultats, alors que si le realise n'existe pas encore j'aimerais que le temps soit à 0 et donc que cela affiche que le Prevu.temps en face de l'Id et du User Quelqu'un a t il une idée ? Merchi :)
|
|
vendredi 20 février 2009 à 15:58:41 |
Re : Select avec résultat induit

ed73
|
En SQL Server ça pourrait être
SELECT Prevu.Id, Prevu.User, CASE WHEN Realise.Temps is not null Prevu.Temps - Realise.Temps ELSE Prevu.Temps END AS Charge FROM Prevu LEFT OUTER JOIN Realise ON (Prevu.Id = Realise.Id AND Prevu.User = Realise.Id)
En Access
SELECT Prevu.Id, Prevu.User, IIF(Realise.Temps is not null,Prevu.Temps - Realise.Temps,Prevu.Temps) AS Charge FROM Prevu LEFT OUTER JOIN Realise ON (Prevu.Id = Realise.Id AND Prevu.User = Realise.Id)
|
|
vendredi 20 février 2009 à 16:01:13 |
Re : Select avec résultat induit

ed73
|
Il y a aussi un truc qui ne va pas dans ta requête, la jointure devrait être :
(Prevu.Id = Realise.Id AND Prevu.User = Realise.User)
|
|
dimanche 1 mars 2009 à 21:26:09 |
Re : Select avec résultat induit

Malkuth
|
Réponse acceptée !
un truc aussi, je ne connait pas toute ta base de donné mais je vois pas l'intéret des 2 table,
tu pourais faire Table Travail : Id User TempsPrevus Fait (type booleen) TempsReel
voir même, tu fais
Table Travail : Id User TempsPrevu TempsReel
en autorisant Null dans la colone TempsReel et si temps Réel = NULL alors c'est que le travaille n'est pas fait mais bon concernant l'indexation se seras sans doute plus efficace de prendre la premiére solution, ce qui donnerais la requette suivante sur SQLServeur
SELECT (TempsPrevu - CASE Fait WHEN 1 THEN TempsReel ELSE 0 END) AS Charge FROM Travaille
Et si cette requette est utiliser souvent tu fais même un champ calculer
Table Travail : Id User TempsPrevu Fait (type booleen) TempsReel Charge (TempsPrevu - CASE Fait WHEN 1 THEN TempsReel ELSE 0 END)
ca donne la définition de table suivante :
CREATETABLE [dbo].[Travail]( [Id] [int] NOTNULL, [User] [int] NOTNULL, [TempsPrevu] [int] NOTNULL, [Fait] [bit] NOTNULL, [TempsReel] [int] NOTNULL CONSTRAINT [DF_Travail_TempsReel] DEFAULT((0)), [Charge] AS([TempsPrevu]-case [Fait] when(1)then [TempsReel] else(0)end) PERSISTED,
CONSTRAINT [PK_Travail] PRIMARYKEYCLUSTERED( [Id] ASC) WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ) Le mot clef Persisted indique au moteur de calculer la valeur de Charge lors de la modifications de Fais/TempsReel/TempsPrevu plutot qu'au moment de la selection, vu que ces champs ne sont sans doute pas modifier trés souvent sa te fais gagner pas mal en performance.
aprés tu fais un select tout se qu'il y'a de plus banal :
SELECT Charge FROM Travail ^^ et en plus tu peus indexé Charge si t'en as besion dans des condition de requette (genre voir les traveaux dont la charge dépasse 100...
|
|
Cette discussion est classée dans : table, temps, id, prevu, realise
Répondre à ce message
Sujets en rapport avec ce message
if dans une procédure stocké ? [ par jesusonline ]
Bonjour, je ne connais pas encore SQLj'ai une table articles qui a un champ ID et je voudrais une fonction stocké qui prend en paramètre un ID et qui
Selectionner les lignes dont un champ apparait plusieurs fois [ par bluebird_29200 ]
Bonjour a tous ! sur la table reservations client_id | transaction_id je cherche a faire ressortir les client_id dont le nombre d'apparitions dep
requete croisement de table [ par sdisp ]
Bonjour, je souhaiterais pouvoir croiser des ligne dans mon tableau, je expliques, j'ai une table de se genre: id id_suivant référence 1 3 10 2 1 1
Problème de requête à double jointure ... HELP ! [ par vladam ]
Hello,Voici mon problème.J'ai une table "Table_3" avec 3 champsle premier ID numériquele deuxième ID2 numériquele troixième ID3 numériquej'ai une seco
une requete qui me casse la tête [ par chmouette ]
Salut les gens!Mon problème est purement SQL. J'ai une table Ma Table avec des champs tels que :+-------------------------+ ! MaTable &nbs
auto increment [ par bob ]
Bonsoir ! Alors voila, j'ai une question qui va etre surement trés simple pour vousvoila le sql de mla table CREATE TABLE `blogs` ( `id` smallint(6)
requête sur le résultat d'une requête [ par sev622 ]
Bonjour, J'ai un problème dans la construction de ma requête. J'ai une table avec 2 champs numériques : id_p, id_f Je veux compter le nombre d'id_p qu
erreur 1785 [ par sev622 ]
Bonjour, Je crée des tables avec pas mal de foreign key et j'ai l'erreur suivante :Serveur : Msg 1785, Niveau 16, État 1, Ligne 1L'introduction d'une
help pour requete SQL [ par lenneth666 ]
Voila j'ai une table avec les champs suivants : ens_id form_id mat_id annee_id nb ens_id,form_id et mat_id sont une clé composé de cette table. La
INSERT a l'id qu'on vient de DELETE [ par Bassman ]
Voila j'aimerais savoir sous mysql comment forcé l'insertion dès le "départ", c'est a dire, par exemple dans votre table utilisateur vous venez d'en s
Livres en rapport
|
Derniers Blogs
MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|