Vet att jag har löst detta innan, men kan inte hitta hur man gjorde.
Jag söker på 5 kolumner i en databas, från 3 olika tabeller. I en tabell finns förnamn, efternamn och mellannamn. Jag vill kunna söka på Johan Andersson men det får jag ju inte några träffar på om jag skriver på följande sätt
strSQL = "SELECT dbo.Distributors.Name, dbo.CountryName.CountryName_GB, dbo.DistributorContacts.ForeName, dbo.DistributorContacts.MiddleName, dbo.DistributorContacts.LastName, dbo.DistributorContacts.Title "_
&"FROM dbo.DistributorContacts INNER JOIN dbo.Distributors ON dbo.DistributorContacts.DistId = dbo.Distributors.DistId INNER JOIN dbo.CountryName ON dbo.Distributors.Countryname_ID = dbo.CountryName.CountryName_ID "_
&"WHERE Name LIKE '%" & strSearch & "%' OR CountryName_GB LIKE '%" & strSearch & "%' OR ForeName LIKE '%" & strSearch & "%' OR MiddleName LIKE '%" & strSearch & "%' OR LastName LIKE '%" & strSearch & "%' "_
Eftersom om man söker på namn så söker man på 3 kolumner; för, mellan och efternamn så får man ingen träff om man inte söker på enbart johan eller andersson
Jag vill alltså slå ihop för, mellan och efternamn till en kolumn i frågan och köra en LIKE på den.
Om jag slår ihop dem på följande sätt får jag ju dem i en "fake" kolumn men den kan jag sen inte köra en like på.
dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName AS ContactName
Någon som kan friska upp mitt minne om hur man gjorde.
where dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName = 'Johan Andersson'
eller
select * from (select dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName AS ContactName from t) s
where s.contactName = 'Johan Andersson'
tack larsg, men det blir inte som jag tänkt mig ritkigt..
Jag har följande sql fråga.
SELECT dbo.Distributors.Name, dbo.CountryName.CountryName_GB, dbo.DistributorContacts.ForeName, dbo.DistributorContacts.LastName, dbo.DistributorContacts.Title
FROM dbo.DistributorContacts INNER JOIN
dbo.Distributors ON dbo.DistributorContacts.DistId = dbo.Distributors.DistId INNER JOIN
dbo.CountryName ON dbo.Distributors.Countryname_ID = dbo.CountryName.CountryName_ID
Jag har variabeln strSearch
Skriver jag "johan" vill ja ju få fram alla för, efternamn, företagsnamn som innehåller ordet johan. Skriver jag "johan and" vill jag få fram alla "johan andersson" samt "johan anderson" samt kanske om det finns ett företagsnamn som heter "Johan And Anders company".
Som det är nu får jag ju bara rätt om jag enbart skriver "johan" eller "andersson"
strSearch = replace(strSearch," ","%")
q = "select * from (select dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName AS ContactName from t) s
where s.contactName like '%" & strSearch & "%'"