MYSQL Match частка радка

У мяне ёсць 2 табліцы, мне трэба, каб адпавядаць. Калі ласка, глядзіце прыклад.

ТВ1

ID | String1 
1  | Apt 2
2  | Apt 23
3  | Apt 22

ТВ2

ID2| String2
1  | 23 Apartment
2  | 22 The Block
3  | 2 Complex

I need to find which ID's Match from ТВ1 to ТВ2 WHERE the number part of string 1 to string2 match

ВЫСНОВА

 ID | Matching ID2 | String1 | String 2
 1  | 3            | Apt 2   | 2 Complex
 2  | 1            | Apt 23  | 23 Apartment
 3  | 2            | Apt 22  | 22 Apartment
0
Ясна мне. Ён хоча, каб адпавядаць нумары на строки1.
дададзена аўтар m0skit0, крыніца
Не зразумела - Ці можаце вы растлумачыць, што вы спрабуеце адпавядаць на аснове якіх каштоўнасцяў?
дададзена аўтар Sachin Shanbhag, крыніца
прабачце, так, што гэта правільна, я хачу, каб лік Маха часткі радка 1 Строка2
дададзена аўтар Matt Dykstra, крыніца

2 адказы

ІМХО гэта дрэнны дызайн стала. Калі вы павінны зрабіць такія матчы, захаваць нумар у асобным поле.

0
дададзена
Няма магчымасці рабіць табліцу ALTER?
дададзена аўтар m0skit0, крыніца
Я не разумею, вашыя апошнія каментары. Акрамя таго, гэта крычыць на ключ замежных адносін паміж ТВ1 і ТВ2 ...
дададзена аўтар m0skit0, крыніца
У якім фармаце зрабілі табліцы прыходзяць да вас? CSV?
дададзена аўтар Ed Heal, крыніца
Я б, але гэта, як сталы прыйшлі да мяне, і мне трэба, каб запусціць некаторыя матчы
дададзена аўтар Matt Dykstra, крыніца
Я магу атрымаць яго ў CSV-файл і можа зрабіць змяніць табліцу, аднак дадзеныя настолькі розныя, я не ведаю, як зрабіць гэта змена.
дададзена аўтар Matt Dykstra, крыніца
напрыклад: Строка1 ўключае ў сябе 1 кв, кватэра 1, 1/Блок. Агульным ён утрымлівае шэраг
дададзена аўтар Matt Dykstra, крыніца

Калі вы сапраўды не можаце змяніць фармат табліцы, то я хацеў бы стварыць функцыю, каб распрануць ўсё нечисловых знакаў з зададзенай радкі, а затым выкарыстоўваць яго ў запыце.

На шчасце, гэта задача, якая была вырашаная да таго ( спадзяюся, што ваш італьянскі да нуля)

Затым вы можаце выкарыстоўваць функцыю ў запыце.

такім чынам:

select a.ID, b.ID as "Matching ID2",a.String1,b.String2    
from TB1 as a INNER JOIN TB2 as b    
ON LeaveNumber(a.String1) = LeaveNumber(b.String2)
ORDER BY a.ID asc;

Не дурань доказ і, верагодна, не самы хуткі, але вы павінны атрымаць тое, што вы хочаце.

Хоць я б сур'ёзна разгледзець змены гэтай канструкцыі стала, калі ў вас ёсць шанец. Хоць гэта гучыць, як быццам гэта альбо табліца CSV рухавік ці запаўняецца непасрэдна з CSV і ў гэтым выпадку вы, верагодна, не маюць занадта шмат кантролю над ім!

0
дададзена