2009-11-26 6 views
-1

Table1 t10 (id)jointure de table où

id 
--- 
1 
2 

tableau t11 (a1, a2, a3)

a1 a2 a3 
---------- 
1 10 a 
1 10 b 
1 11 b 
1 12 c 
2 20 d 
2 21 e 

select * from t10 a, b t11 où a.id = b.a1 comment afficher

obtenir juste ligne aléatoire de t11

maybe display this 
id a1 a2 
---------- 
1 1 11 b 
1 1 10 a //(not display this row) 
1 1 10 b //(not display this row) 
1 1 12 c //(not display this row) 
2 2 20 
2 2 21 //(not display this row) 
+0

Ce sont des noms de table et de colonne terrible ... – cjk

+0

juste un testting – shuc

+0

ce que db utilisez-vous? –

Répondre

3
select a1 as id, a1, min(a2) as a2 
from t11 
group by a1 

vous donnera:

id a1 a2 
---------- 
1 1 10 
2 2 20 
+0

Oui, mais il déclare, bien qu'il soit difficile à distinguer, que nous voulons la première ligne insérée dans la table (par exemple a2 = 11 pour id = 1) mais évidemment il a vraiment besoin d'autre facteur dans la détermination de la ligne qu'il veut spécifiquement autre que la façon dont ils ont été insérés dans la table. – Kitson

+0

ouais! Kitson voir – shuc

0

Voici la réponse:

SELECT * 
    FROM t10 a, (
     SELECT * FROM (
      SELECT b.*, ROW_NUMBER() OVER(PARTITION BY a10 ORDER BY a10) as rn 
      FROM t11 b 
     ) WHERE rn =1) b 
WHERE a.id = b.a10(+) 
+2

S'il vous plaît ne pas publier * réponses * lorsque vous souhaitez ajouter des informations. Vous pouvez éditer votre question (et s'il vous plaît faites, il manque quelques informations), ou ajouter * commentaires * aux réponses que vous avez reçues (comme ceci, ici). Bienvenue. – Kobi

+1

N'écrivez pas une réponse sauf s'il s'agit d'une réponse. Commentez les autres réponses ou mettez à jour votre question. Aussi, vous continuez à inverser les 10 et 11 en t11 pour la colonne b. – cjk

+0

ouais je suis désolé, première fois demander qustion ici – shuc

0

Cela semble presque comme il veut quelque chose comme premier/dernier d'un accès ms.

Cela peut ben TERMINÉ (très près) dans Sql Server en utilisant

DECLARE @Table TABLE(
     id INT, 
     a1 INT, 
     a2 INT 
) 

INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 11 
INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 10 
INSERT INTO @Table (id,a1,a2) SELECT 1, 1, 12 
INSERT INTO @Table (id,a1,a2) SELECT 2, 2, 20 
INSERT INTO @Table (id,a1,a2) SELECT 2, 2, 21 

SELECT * 
FROM @Table t 
WHERE a2 = (SELECT TOP 1 a2 FROM @Table WHERE id = t.id AND a1 = t.a1) 
+0

merci votre réponse mais pas ma réponse peut-être exprimer pas clair – shuc

Questions connexes