2010-05-13 8 views
0

i ai 3 tables (A, B, C) Tableau A -requête SQL pour 3 tables

ID Name 
1 Sam 
2 Manuel 
3 Jane 

Tableau B

ID Tab_A_ID Name 
1 1  Meer 
2 1  Kutti 
3 2  Mikaro 

Tableau C

ID Tab_B_ID Price 
1 1  255.11 
2 1  30.52 
3 3  125.22 

I besoin une requête qui doit prendre le prix le plus élevé pour TableA-Name à partir de TableC. Donc, seulement 1 prix maximum pour 1 disque nae. e.g.-

Sam - 255,11

Manuel - 125,22

Comment puis-je obtenir?

+0

problème révisé - j'ai 3 tables (A, B, C) Tableau A - ID Nom 1 Sam 2 Manuel 3 Jane Tableau B ID Tab_A_ID Nom Lieu 1 1 Meer Hina 2 1 Kutti Hineya 3 2 Mikaro Seene Tableau C ID Tab_B_ID Prix 1 1 255,11 2 1 30,52 3 3 125,22 J'ai besoin d'une requête qui va chercher le meilleur prix pour TableA-Name de TableC basé sur tableB-place. Alors top 1 prix pour Sam Hina est 255,11 e.g.- Sam - 255,11 à Hina Manuel - 125,22 à Seene Comment puis-je obtenir? – greffe

Répondre

1

Pour obtenir le prix maximum par entrée dans A:

SELECT  a.Name, 
      MAX(c.price) 
FROM  a 
INNER JOIN b 
ON   a.id = b.tab_a_id 
INNER JOIN c 
ON   b.id = c.tab_b_id 
GROUP BY a.id, a.name 

Pour obtenir le prix maximum par entrée A par entrée B:

SELECT  a.Name, 
      b.Name 
      MAX(c.price) 
FROM  a 
INNER JOIN b 
ON   a.id = b.tab_a_id 
INNER JOIN c 
ON   b.id = c.tab_b_id 
GROUP BY a.id, b.id, a.name, b.name 

Notez que les entrées dans A sans entires correspondante B ou les entrées dans B sans les entrées correspondantes dans C seront et non apparaissent dans le résultat. Utilisez LEFT JOIN si vous voulez les inclure dans le résultat.