2010-06-10 2 views
1

J'ai deux tables, je veux rechercher TermID dans Table-A à TermID dans Table-B et s'il y a un termID comme dans Table-A, puis vouloir obtenir le tableau des résultats comme indiqué ci-dessous.
Les ID de terminaison sont de longueur différente. Il n'y a pas de modèle de recherche pour chercher avec "comme%"
TermIDs dans le tableau-A font partie des TermIDs dans le tableau B
Cordialement,Sql (partiel) recherche dans une liste et obtenir les champs correspondants

Table-A

 
ID   TermID 
101256666 126006230 
101256586 126006231 
101256810 126006233 
101256841 126006238 
101256818 126006239 
101256734 1190226408 
101256809 1190226409 
101256585 1200096999 
101256724 1200096997 
101256748 1200097005 

Table-B

 
TermNo TermID 
14 8990010901190226366F 
16 8990010901190226374F 
15 8990010901190226382F 
18 8990010901190226408F 
19 8990010901190226416F 
11 8990010901200096981F 
10 8990010901200096999F 
12 8990010901200097005F 
13 8990010901200097013F 
17 8990010901260062337F 

En conséquence, je veux obtenir cette table;
Résultat Tableau -TableA.ID TableA.TermID TableB.TermNo

 
A.ID  A.TermID B.TermNo 
101256734 1190226408 18 
101256585 1200096999 10 
101256748 1200097005 12 

Répondre

0

Le résultat attendu est incorrect: TABLE_A.TERMID = 126006233 correspond à TABLE_B.TERMID = 8990010901260062337F.

est ici une solution Quoi qu'il en soit:

SQL> select a.id, a.termid, b.termno 
    2 from table_a a cross join table_b b 
    3 where instr(b.termid, a.termid) != 0 
    4 order by b.termno 
    5/

     ID TERMID     TERMNO 
---------- -------------------- ---------- 
101256585 1200096999     10 
101256748 1200097005     12 
101256810 126006233     17 
101256734 1190226408     18 

SQL> 

modifier

Je suppose que je ferais mieux que le point INSTR() est une fonction Oracle. MySQL l'a aussi. Mais si par [sql] vous voulez dire "SQL Server" alors vous devez remplacer the CHARINDEX() function.

0

Pourquoi pas quelque chose comme:

select a.id 
     a.termid 
     b.termno 
    from Table-A A 
     Table-B B 
where B.TermID LIKE '%'+A.TermID+'%' 

travail?

Questions connexes