Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2011, 18h37   #1
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

Informations professionnelles :
Activité : Chef de projet
Secteur : Biens de consommation

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
Par défaut SQL valeurs non présentes

Bonjour,

Je cherche sur des MS SQL Serveur 2008 et 2008 R2 à extraire des "manques" pour un champ integer.

Par exemple, pour la table Matable, avec les champs f1 (int) et f2(int) ou f1 est un primary.
f1, f2
1000,247
1001,248
1002,250
1003,251
1004,254
1005,255
1006,257

Je cherche les valeurs manquantes 249,252,253,256 via une requête SQL plutôt que par programme en sachant que j'ai plusieurs millions de lignes dans la table concernée.

Je rêve ou c'est possible ?

Merci pour votre aide.
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 08h17   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
247,248,249.

Est ce une simple valeur ou est une FK?

Si c'est une FK vosu avez une table listant toutes les valeurs la requête est donc triviale...

Sinon:
Avec une table des valeurs...

Créez une table des entiers puis faites une WHERE NOT EXISTS...

Mais ça va être coûteux!

A tester..;
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 08h27   #3
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

Informations professionnelles :
Activité : Chef de projet
Secteur : Biens de consommation

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
En voilà une idée, je pense qu'elle devrait me permettre de m'en sortir en créant une petite table de 10000 ou plus, de valeurs contigues. A tester pour la dimension, puis faire cette comparaison entre la table "Matable" et la table de référence.

Je ne connaissais pas NOT EXISTS et je ne sais pas ce que veux dire FK.
Bref me reste plus qu'a trouver une façon élégante de créer ma table de référence.

Je cherche dans ce sens,

Merci
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 10h25   #4
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
FK=Foreign Key...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 12h39   #5
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

Informations professionnelles :
Activité : Chef de projet
Secteur : Biens de consommation

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
Citation:
Envoyé par iberserk Voir le message
FK=Foreign Key...
Merci pour cette info complémentaire, je n'avais plus les yeux en face des trous...

Pour l'idée de la table de comparaison, j'y suis arrivé, grâce à ton conseil, mais sans arriver à utiliser NOT EXISTS.
Juste une table remplie avec les valeurs que je dois trouver dans Matable/f2 et un left join lorsque le champ f1 est à null, donc absent.

C'est un peu plus complexe que ça au final, car j'ai des séquences qui se répète chaque jour et j'ai donc un select qui tien compte de date...

En tout cas merci
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 16h53   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 435
Points : 10 435
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Un EXCEPT sera probablement plus performant qu'une jointure externe.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h08   #7
Membre du Club
 
Homme
Chef de projet
Inscription : février 2009
Messages : 137
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 56

Informations professionnelles :
Activité : Chef de projet
Secteur : Biens de consommation

Informations forums :
Inscription : février 2009
Messages : 137
Points : 67
Points : 67
Citation:
Envoyé par Waldar Voir le message
Un EXCEPT sera probablement plus performant qu'une jointure externe.
Bonjour,

Je vais regarder ce que celà donne,

merci

Pour que mes essais soient valident, il faut que je le fasse sur une base avec un volume conséquent, la mienne, de test, n'est pas assez volumineuse pour voir une différence de performance.
castorcharly est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h23.


 
 
 
 
Partenaires

Hébergement Web