webForumDet fria alternativet

Om artikel finns i annan tabell så...

Databaser & SQL

4 svar · 488 visningar · startad av timedia

Medlem sedan maj 2001420 inlägg
Frågan#1

Försöker klura ut hur jag ska fixa detta, men lyckas inte.
Om artikelnummer finns i tabellen Plattmiljo i cell P1 eller P2 eller P3 o.s.v Såhär kan man ju inte göra:

Visamil = "SELECT * FROM Plattmiljo WHERE P1 OR P2 OR  P3 OR  P4 OR  P5 OR  P6 OR  P7 OR  P8 = " & RS("Artikelnr")

RS("Artikelnr") kommer från tabellen Plattor

Medlem sedan juni 20008 205 inlägg
#2

SELECT * FROM Plattmiljo WHERE <artikelnumret> IN (P1, P2, P3, P4, P5, P6, P7, P8)
Det blir dock ingen effektiv fråga om man söker på flera fält på det här viset.

Medlem sedan dec. 200012 464 inlägg
#3

Flyttas från ASP

Medlem sedan maj 2001420 inlägg
#4

Hur borde man göra då? En miljöbild innehåller ett antal olika plattor som jag vald att lägga i unika kolumner. (då det ju inte är bra att kommaseparera)

Medlem sedan juni 20008 205 inlägg
#5

timedia skrev:

Hur borde man göra då? En miljöbild innehåller ett antal olika plattor som jag vald att lägga i unika kolumner. (då det ju inte är bra att kommaseparera)

Kommaseparera är aldrig rätt :)
Problemet är att frågan inte kan använda index, så du kan få prestandaproblem om databasen växer eller om den har många samtidiga användare. Om jag förstår det rätt så har du ett antal miljöbilder, och varje bild kan innehålla ett antal plattor. Alla plattor kan, antar jag, förekomma i flera bilder. En klassisk många-till-många-relation, alltså. Vill du att databasen ska bli mer skalbar rekommenderar jag dig att göra en relationstabell som förbinder plattor och miljöbilder. Det gör även att om du skulle hitta på en ny miljöbild med >8 plattor i, behöver du inte göra om din datamodell.

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)