2010-11-27 6 views
1

J'ai deux tables:Comment choisir entre deux colonnes différentes dans un état Trier par une autre table et les rejoindre par SQL

Tableau 1 .. est-

 firstname | lastname 

    Peter  | Das 

    Das  | James 

    vector  | Call 

    cans  | Das 

et table2 est

id | user | roll 
___________________ 
1 | cans | 5 

2 | James | 2 

3 | Peter | 8 

4 | vector | 6 

Et je veux le résultat de sortie comme

id | name 
__________ 
3 | Peter 

1 | Cans 

2 | James 

Et la description de la requête SQL peut être comme ça

SELECT (lastname WHERE firstname='Das' AND firstname WHERE lastname='Das' FROM table1 AS name 
(SELECT roll from table2 AS rollorder WHERE user=name) ORDER BY rollorder DESC 

ici l'ordre NUST devrait être table2

Je ne sais pas ce sql requête

donc s'il vous plaît aidez-moi

Toutes les idées et suggestions sont les bienvenues

+2

Vous avez besoin d'apprendre les bases de l'interrogation .. Est-ce devoirs par hasard? –

+0

Désolé je pensais que c'était une requête beaucoup plus simple quand j'ai vu la première fois .. ici vous allez cela devrait fonctionner .. –

Répondre

1
select t2.id, (case when t1.lastname = 'Das' then t1.firstname 
       when t1.firstname = 'Das' then t1.lastname end) 
    from (select (case when lastname = 'Das' then firstname 
         when firstname = 'Das' then lastname end) as name_to_compare, 
       firstname, 
       lastname 
      from table1 
      where firstname = 'Das' or 
       lastname = 'Das') t1 inner join 
      table2 t2 on t1.name_to_compare = t2.users 
    order by t2.roll desc 

EDIT: certains erreurs rectifiées, cela devrait fonctionner parfaitement. Testé sur les données de test. L'utilisateur est un mot-clé, donc remplacé par des utilisateurs. Remplacez avec la colonne appropriée dans votre base de données.

+0

Ce code ne fonctionne pas ... est-il quelqu'un qui peut aider. –

+0

Désolé, il y avait une légère erreur dans l'instruction case - les noms des colonnes étaient erronés. Corriger .. –

+0

en attente de votre réponse ..... –

Questions connexes