2012-11-21 3 views
0

j'ai une requête comme ci-dessousComment trouver les occurrences d'une colonne associée à une colonne correspondante dans une requête SQL

select custref, tetranumber 
from 
    (select * 
    from cdsheader h, custandaddr c 
    where h.custref=c.cwdocid and c.addresstype = 'C') 
where tetranumber = '034096' 

L'objectif est la 2ème colonne doit avoir une seule correspondante 1ère colonne

ex: 034096 doit avoir toujours avoir 2.600.135 comme la première colonne

Je voudrais vérifier s'il y a une valeur en dehors de 2.600.135 pour 034096.

(je suis un développeur java et a suggéré une solution pour éviter 1 à n ou n à n mappages de données mais il y a déjà une mauvaise donnée dans la DB (Oracle), donc je voudrais vérifier s'il y a une mauvaise donnée pour que je puisse supprimer les données)

+4

[Mauvaises habitudes à lancer: utiliser les anciens JOINs] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - cette vieille liste de t Le style ables * a été abandonné avec l'ANSI - ** 92 ** SQL Standard ** il y a 20 ans ** - le temps d'arrêter de l'utiliser! –

+2

Aussi, même dans les sous-requêtes, c'est probablement une mauvaise idée d'utiliser 'SELECT *'. D'une part, si les colonnes que vous listez sont toutes dans un index, les résultats _may_ peuvent être retournés en utilisant l'index, au lieu de regarder la table (RDBMS dépendant, et si l'optimiseur peut obtenir des informations équivalentes de la clause SELECT finale) de toute façon). –

+0

*** SQL *** est juste le * Structured Query Language * - une langue utilisée par de nombreux systèmes de base de données, mais pas un produit de base de données ... il serait très utile de savoir quel ** système de base de données ** (et qui version) que vous utilisez .... –

Répondre

0

Merci pour les gars de réponse,

J'ai compris le chemin et qu'il ira ensuite ...

select custref, count (distinct (tetranumber)) de ( select custref, tetranumber de cdsheader h, custandaddr c où h.custref = c.cwdocid et c.addresstype = 'C') groupe par custref ayant le compte (distinct (tetranumber))> 1

0

re: l'objectif est la 2ème colonne doit avoir une seule 1ère colonne correspondante Vous devez effectuer une fonction d'agrégation, comme MAX ou MIN, pour déterminer qui de la ligne est renvoyée.

Questions connexes