webForumDet fria alternativet

Query som "joinar" data mellan tabeller beronde på fält-värde - Omöjligt?

Databaser & SQL

2 svar · 196 visningar · startad av JonasP

Medlem sedan apr. 20022 inlägg
Frågan#1

Hejsan,

Jag har ett problem som jag inte hittar någon bra lösning på.

Jag har en tabell där användaren har samlat ihop ett antal artikelnummer och lite personlig information om varje artikel. Sedan har jag två olika tabeller som innehåller artiklar, en "system" tabell och en "user" tabell med användardefinierade artiklar, som är fält-mässigt identisk med "system" tabellen.

I "user" tabellen hamnar alltså användarens egen-påhittade artiklar, mendans användaren kan snabbt lägga upp en referns till "system" tabellen.

Om artikeln är användar definierad så är fältet user_defined i användarens tabell satt till 1.

Problemet är alltså när jag vill göra en SELECT på detta.

Sammanfattning:

Om tabell1.user_defined är 1, ska jag JOINA med tabell2 (användardefinierade artiklar), annars med tabell3 (systemets artiklar).

Det jag tycker borde fungera (men det gör det inte) är:

SELECT * FROM tabell1 AS a, IF(a.user_defined=1,b,c) AS b WHERE a.upc=b.upc ORDER by b.name

Jag vill alltså ha detta i en query eftersom jag vill sortera alltihopa på artikelnamnet som finns i tabell2 alternativt tabell3.

Någon som har några ideér på hur man löser detta?

Medlem sedan dec. 200012 464 inlägg
#2

Någon som har några ideér på hur man löser detta?

Gör om designen. Det finns ingen anledning att ha två identiska tabeller.

Medlem sedan apr. 20022 inlägg
#3

Jamen det är ju inte samma data i dom, och dom ligger i olika databaser, så det kan jag ju inte/vill inte göra :)

Dessutom är vitsen med detta att man ska kunna överstyra "systemets" artikel med en egen, med samma artikelnummer.

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)