2016-11-19 3 views
1

J'ai 3 tables d'entrée comme:Pour calculer une nouvelle colonne avec trois tables

**Student Table**  
    ------------- 
    id name 
    ------------- 
    201  shiva 
    202  Jitendra 
    203  Makarand 
    204  Arpit 

    **Position Table** 
    ------------- 
    id rank 
    ------------- 
    203 1 
    201 2 
    202 3 
    204 4 

    **House Table** 
    ------------------ 
    housename id 
    ------------------ 
    Yellow  201 
    Blue   202 
    Red   203 
    Yellow  204 

Il y a n-enregistrements étudiants Tableau

Je veux calculer les points (colonne) avec la formule P = somme (n + 1 - rang) * 100

** Output Table ** 
------------------------------- 
HouseName  Name  Points 
------------------------------- 
yellow   Shiva   300 
Red   Makarand  200 
Yellow   Arpit   100 

J'ai écrit cette requête:

select h.housename "House Name", 
     s.name "Name", 
     (sum ((count(*) from s + 1) - p.rank)) * 100 as "Points" 
     from House h,Student s,Position p 
     where h.housename = (select s.name where s.id = h.id) 
     order by Points 

Sample SQL Fiddle est ici: http://sqlfiddle.com/#!9/4d823/26

Je suis novice à SQL, comment puis-je obtenir cette requête correcte?

+0

n est le nombre d'étudiants? – scaisEdge

+0

@scaisEdge Oui, n = nombre d'élèves dans la table des élèves –

+0

Quelles sont les relations entre les 3 tables? – scaisEdge

Répondre

0

Votre question n'est pas clair, si vous essayez d'obtenir les points (en utilisant la formule) à partir de trois tables,

select h.housename "House Name", 
    s.name "Name", 
    ((count(s.id) + 1 - p.rank) * 100) as "Points" 
    from House h join Student s on s.id = h.id join Position p on p.id=s.id order by Points 

Je ne l'ai pas exécuter cette requête. Pourriez-vous vérifier et confirmer?

+0

Oui va bien, mais la requête ci-dessus a des erreurs. [link] http://sqlfiddle.com/#!9/4d823/26 –

+0

J'ai mis à jour ma réponse – maheshiv