Hej alla glada... Kunden vill nu har + och "" funktionen i sökningen... Jo man ska kunna söka på Bil & Båt t ex... "Bil + Båt" Nej det går inte att få in direkt/rakt av i sql. Jo förstog att man var tvungen att splitta.. Problemet är ju att det är så många fält som ska sökas igenom... 20-30 st... blir en jäkla lång SQL-sträng... Men måste du ha med alla Like som finns i din sqlfråga? Söker kunden verkligen allt på en gång? Jo det är ju det man tycker att de inte ska behöva söka i alla fält.. men det är så kunden vill ha det... SP vet jag hur man gör.. men hur gör man för att skicka in parametrar?? Den vore ju grymmast om jag fick till... I SP skriver du parametrarna mellan "Create Procedure spnamn" och "as" exempelvis: Har nu löst problemet.. delvis ialla fall.. Jag är lite sent ute. Jo självklart skulle jag ha normaliserat den om det var jag som gjorde den :) Vill du söka på hela ord, så kan du väl lägga in ett mellanslag efter? Från BOL: Posterna behöver du inte bry dig om. Det låter du ett script eller fråga sköta. Det är grännsnittet för att visa datastrukturen som du är tvungen att förändra. Andreas har helt rätt. Om du inte skriver om strukturen nu så kommer du ständigt att ha liknande problem som detta med sökning. Om nu inte detta är den sista utveckling som sker på systemet? Om du vill söka på hela ordet är det bättre att använda = än att använda LIKE. Dessa kan ju också användas omväxlande så att man bara då t.ex. wildcards ska användas använder LIKE. Söker man på 'Arla' med LIKE så får man inte tillbaka Arlanda om man inte har lagt till % (alltså LIKE 'Arla%').Sökning med Plus och fnuttar??
Skulle bli jätte trevligt om någon vänlig kille/tjej hjälpte mig med detta...
Jag har en kund som ska visa en produkt på Tisdag i London och vi måste fixa till sökningen i databasen..
En produktkatalog finns och den är väldigt omfattande med massor av fält...
Jaja.. sökningen fungerar nu i alla fält (sql koden blev lång)...
Kunden vill nu har + och "" funktionen i sökningen... Går det att göra?? Jag har sökt igenom forumet men inte hittat något...
Det är ASP och MS-SQL 2000
Hjälp!!!
strQuery = "SELECT * FROM tblData LEFT JOIN tblProdukter ON(tblData.prodID = tblProdukter.prodID) WHERE Produkt LIKE '" & strSearch & "' OR Bredd LIKE '" & strSearch & "' OR Langd LIKE '" & strSearch & "' OR ø LIKE '" & strSearch & "' OR Dø LIKE '" & strSearch & "' OR Halø LIKE '" & strSearch & "' OR hxb LIKE '" & strSearch & "' OR hxbxdj LIKE '" & strSearch & "' OR L1 LIKE '" & strSearch & "' OR Ltum LIKE '" & strSearch & "' OR Lmm LIKE '" & strSearch & "' OR Kontaktdon LIKE '" & strSearch & "' OR Typ LIKE '" & strSearch & "' OR Storlek LIKE '" & strSearch & "' OR EffektW LIKE '" & strSearch & "' OR Volt LIKE '" & strSearch & "' OR YteffektW_cm2 LIKE '" & strSearch & "' OR Temperaturområde LIKE '" & strSearch & "' OR Material LIKE '" & strSearch & " OR AreaCU LIKE '" & strSearch & "' OR AreaT_C LIKE '" & strSearch & "' OR Artikelnr LIKE '" & strSearch & "' OR AnslGanga LIKE '" & strSearch & "' OR Ganga LIKE '" & strSearch & "' OR Benamning LIKE '" & strSearch & "' OR Beteckning LIKE '" & strSearch & "' OR KL LIKE '" & strSearch & "' OR Kabeltyp LIKE '" & strSearch & "' OR Anslutning LIKE '" & strSearch & "' OR Ledararea LIKE '" & strSearch & "' OR Norm LIKE '" & strSearch & "' OR Reglerområde LIKE '" & strSearch & "' OR Spanning LIKE '" & strSearch & "' OR Larm LIKE '" & strSearch & "' OR Anmarkning LIKE '" & strSearch & "' ORDER BY DataID ASC"Sv: Sökning med Plus och fnuttar??
Vad menar du???? Hur har kunden det nu, och vad skall skillnaden bli?
/mickeSv: Sökning med Plus och fnuttar??
Och då ska man få både bil och båt som resultat...Sv: Sökning med Plus och fnuttar??
Om kunden skriver:
"Bil + Båt"
måste du innan du skriver sql frågan splitta upp strängen
så att du får två separata argument, en med "Bil" och en med "Båt" som du lägger in i en array.
Sedan måste du dynamiskt bygga upp sql frågan utifrån hur många argument du har hittat,/lagt till i din array något i stil med (vet ej syntax i asp men tänket ska vara så här):
sql = sql & "WHERE "
foreach item in arrayargument
sql = sql & "Fordon = " & item & " AND "Sv: Sökning med Plus och fnuttar??
Sv: Sökning med Plus och fnuttar??
Hela sqlfrågan ska byggas upp dynamiskt så att du inte tar med en massa villkor i onödan.
Om sökningen tar lång tid så rekommenderar jag dig att göra en stored procedure istället. Där alla villkor skickas in som parametrar.
Oavsett om du bygger din fråga i din kod eller i en sp så bör du göra en massa if villkor och bygga upp din fråga dynamiskt.Sv: Sökning med Plus och fnuttar??
Då är det bara min kunskap i SQL som sätter stopp :(Sv: Sökning med Plus och fnuttar??
Tack för hjälpen!Sv: Sökning med Plus och fnuttar??
Create Procedure spnamn
@Parameter1 int = 0,
@Parameter2 nvarchar(10) = "",
@Parameter3 bit = 0
AS
På parametrarna sätter du default värden ifall kunden inte fyller i vissa fält.
Sedan kollar du med en if sats om sql frågan ska byggas ut
if @Parameter1 <> 0
bygg ut frågan
Om du vill ha en array parameter kan du spara den i en nvarchar och sedan använda en splitfunktion
med komma tecknet som separator.
Hur du skickar parametrar från ASP vet jag inte men du hittar säker i hjälpen
för ASP om du söker på stored procedure oach parameterSv: Sökning med Plus och fnuttar??
Enda som strular är hur man ska kunna söka på hela ord istället för hela fältet...
T ex :
Vi söker på : Arla och får följande resultat :
"Arla"
"Arlanda"
"Arla tillverkar mjölk, fast det är ju egentligen kossor som gör det"
osv..
Vi söker med fnuttar : "Arla" och får följande resultat :
"Arla"
Alltså så missar vi den sista eftersom fältet innehåller mer än bara "Arla"....Sv: Sökning med Plus och fnuttar??
Jag har förslag på hur er datastruktur bör omorganiseras:
Tabell: tblProperties
Fält: PropertyId
Fält: PropertyName
Tabell: tblProducts
Fält: ProductId
Fält: ProductName
osv...
Tabell: tblProductProperties
Fält: ProductPropertyId
Fält: ProductPropertyProperty -> tblProperties.PropertyId
Fält: ProductPropertyProduct -> tblProducts.ProductId
Fält: ProductPropertyValue
Fält: ProductPropertyUnit
Exempel data:
tblProperties
--------------------------------------------
PropertyId, PropertyName
--------------------------------------------
1, "Bredd"
2, "Langd"
3, "Area"
4, "Storlek"
5, "Kontaktdon"
6, "Material"
7, "Färg"
tblProducts
--------------------------------------------
ProductId, ProductName
--------------------------------------------
1, "EKK 1,5mm² blå"
2, "EKK 1,5mm² brun"
3, "EKK 1,5mm² gul-grön"
4, "EKK 2,5mm² blå"
5, "EKK 2,5mm² brun"
6, "EKK 2,5mm² gul-grön"
tblProductProperties
----------------------------------------------------------------------------------------
ProductPropertyId, ProductPropertyProperty, ProductPropertyProduct, ProductPropertyValue, ProductPropertyUnit
----------------------------------------------------------------------------------------
1, 2, 1, "100", "m"
2, 3, 1, "1.5", "mm²"
3, 6, 1, "CU", Null
4, 7, 1, "Blå", Null
5, 2, 2, "100", "m"
6, 3, 2, "1.5", "mm²"
7, 6, 2, "CU", Null
8, 7, 2, "Brun", Null
9, 2, 3, "100", "m"
10, 3, 3, "1.5", "mm²"
11, 6, 3, "CU", Null
12, 7, 3, "gul-grön", Null
13, 2, 1, "100", "m"
14, 3, 1, "2.5", "mm²"
15, 6, 1, "CU", Null
16, 7, 1, "Blå", Null
17, 2, 2, "100", "m"
18, 3, 2, "2.5", "mm²"
19, 6, 2, "CU", Null
20, 7, 2, "Brun", Null
21, 2, 3, "100", "m"
22, 3, 3, "2.5", "mm²"
23, 6, 3, "CU", Null
24, 7, 3, "gul-grön", Null
Denna datastruktur ger er möjligheten att att lägga till och ta bort egenskaper utan att förändara datastrukturen.Sv: Sökning med Plus och fnuttar??
Men nu är det redan för sent och jag skriver inte om ca 10 000 poster :) Det blir kundens huvudvärk...
Tack för infon dock!!Sv: Sökning med Plus och fnuttar??
LIKE '%Arla %'
istället för utan mellanslag. Då kan du behöva experimentera med ANSI PADDING för att få det att funka.
/mickeSv: Sökning med Plus och fnuttar??
ANSI_PADDING
When set to ON, trailing blanks in character values inserted into varchar columns and trailing zeros in binary values inserted into varbinary columns are not trimmed. Values are not padded to the length of the column. When set to OFF, the trailing blanks (for varchar) and zeros (for varbinary) are trimmed. This setting affects only the definition of new columns.
Char(n) and binary(n) columns that allow nulls are padded to the length of the column when SET ANSI_PADDING is set to ON, but trailing blanks and zeros are trimmed when SET ANSI_PADDING is OFF. Char(n) and binary(n) columns that do not allow nulls are always padded to the length of the column.
Important It is recommended that ANSI_PADDING always be set to ON. SET ANSI_PADDING must be ON when creating or manipulating indexes on computed columns or indexed views.
The status of this option can be determined by examining the IsAnsiPaddingEnabled property of the DATABASEPROPERTYEX function.Sv: Sökning med Plus och fnuttar??
Sv: Sökning med Plus och fnuttar??
Sv: Sökning med Plus och fnuttar??