Hej! Varför har du olika tabellnamn (123, 124 och 125)? Känns som en väldigt dum lösning... Går ju lösa, men känns smidigare att göra en korrekt struktur. Hej, Anledningen är den att databasen är autogenerad då den i grunden är baserat på ett objektorienterat synsätt. SELECT Namn, filnamn FROM Namn INNER JOIN [123] ON Namn.ObjectID = [123].ObjectID WHERE Namn.TabellNamn = 123 Problemet blir ju när du ska försöka generera sökningen dynamiskt. Ett alternativ (säkert sämre prestanda, men kanske lättare att bolla vidare med): Tomas, det där kommer inte bli så bra om samma ObjectID förekommer i de olika tabellerna... Nu vet vi ju dock inte om så är fallet.svår sql-sats...
Sitter med en lurig sql-sats, någon som vet hur man får fram nedanstående resultat?
RESULTAT:
------------
Namn|filnamn
------------
Kent|Kenta_tsd.gif
Torsten|Torstenewe_.gif
Eva|Johana_.gif
Sven|Evad_.gif
Johan|Svenasdf_.gif
Karl|Karlasdf_.gif
Tabeller som finns i databasen
------------
Tabellnamn: Namn
------------
TabellNamn|ObjectID|Namn
------------
123|121|Kent
123|122|Torsten
124|34|Eva
124|45|Sven
123|124|Johan
125|135|Karl
------------
Tabellnamn: 123
------------
ObjectID|filnamn
------------
121|Kenta_tsd.gif
122|Torstenewe_.gif
123|124|Johana_.gif
------------
Tabellnamn: 124
------------
ObjectID|filnamn
------------
34|Evad_.gif
45|Svenasdf_.gif
------------
Tabellnamn: 125
------------
ObjectID|filnamn
------------
125|135|Karlasdf_.gif
Tack på förhandSv: svår sql-sats...
/JohanSv:svår sql-sats...
Egentligen skall man inte gå direkt mot databasen utan via en applikations gränssnitt, i det här fallet är jag dock tvungen att göra så..Sv: svår sql-sats...
UNION ALL
SELECT Namn, filnamn FROM Namn INNER JOIN [124] ON Namn.ObjectID = [124].ObjectID WHERE Namn.TabellNamn = 124
UNION ALL
SELECT Namn, filnamn FROM Namn INNER JOIN [125] ON Namn.ObjectID = [125].ObjectID WHERE Namn.TabellNamn = 125
/JohanSv:svår sql-sats...
I så fall måste du nästan först exekvera en fråga där du får alla ObjectID:
1. SELECT n.[Namn], n.[tabellnamn] FROM Namn n
Du tar sen resultatet från denna fråga och bygger ihop frågan via en sträng:
(ful pseudo c#kod)
<code>
string query2 = "";
string union = "";
foreach (row in fråga1resultset)
{
query2 += union;
query2 += "SELECT n.Namn, filnamn FROM Namn n INNER JOIN [" + row.getString(1) + "] o ON n.ObjectID = o.ObjectID" + Environment.NewLine;
union = "UNION ALL" + Environment.NewLine;
}
//execute query2;
</code>
Konceptet borde funka, lär ju behövas snyggas till lite :-)Sv: svår sql-sats...
SELECT n.namn, COALESCE(a.filnamn, b.filnamn, c.filnamn) AS filnamn
FROM Namn n
LEFT OUTER JOIN 123 a ON n.ObjectId = a.ObjectId
LEFT OUTER JOIN 124 b ON n.ObjectId = b.ObjectId
LEFT OUTER JOIN 125 c ON n.ObjectId = c.ObjectId
Givet att det finns <b>exakt en matchning i någon av filnamnstabellerna</b> per skalle
Edit: fetstil
Sv:svår sql-sats...
/Johan