Jag fick hjälp av JohanD(tror jag) med en väldigt inveklad SQL. Jag förstår inte riktigt din fråga eller vad du vill göra. Vad vill du ha ut för resultat? Vad är det som fungerar och vad fungerar inte? Kanske dåligt förklarat av mig. Jag hade tydligen fel, SQLen fungerar, men tydligen inte mitt huvud. Skulle tydligen vara:Klurig SQL
Nu behöver jag utvekla den lite, och jag har trixat lite och nästan lyckats.
Så här ser SQL:en ut:
<code>
SELECT t_SongTitlar.ArrNo,
t_songtitlar.songtitel,
(SELECT TOP 1 namn FROM t_songforfattare
INNER JOIN t_forfattare
ON t_songforfattare.for_id = t_forfattare.for_id
WHERE ArrNo = t_songtitlar.ArrNo
ORDER BY t_songforfattare.for_id ASC) AS Författare,
(SELECT TOP 1 namn
FROM t_songforfattare
INNER JOIN t_forfattare
ON t_songforfattare.for_id = t_forfattare.for_id
WHERE ArrNo = t_songtitlar.ArrNo
AND t_songforfattare.for_id >
(SELECT TOP 1 for_id
FROM t_songforfattare
WHERE ArrNo = t_songtitlar.ArrNo
ORDER BY for_id ASC)
ORDER BY t_songforfattare.for_id ASC) AS Författare2,
(SELECT TOP 1 namn
FROM t_songforfattare
INNER JOIN t_forfattare
ON t_songforfattare.for_id = t_forfattare.for_id
WHERE ArrNo = t_songtitlar.ArrNo
AND t_songforfattare.for_id >
(SELECT TOP 1 for_id FROM t_songforfattare
WHERE ArrNo = t_songtitlar.ArrNo
AND t_songforfattare.for_id >
(SELECT TOP 1 for_id
FROM t_songforfattare
WHERE ArrNo = t_songtitlar.ArrNo
ORDER BY for_id ASC)
ORDER BY t_songforfattare.for_id ASC)) AS Författare3
From t_songtitlar
LEFT JOIN t_songforfattare
ON t_songtitlar.ArrNo = t_songforfattare.ArrNo
LEFT JOIN t_Forfattare
ON t_songforfattare.for_id = t_forfattare.for_id
Where t_forfattare.Namn = 'kimbely widing'
order by t_songtitlar.ArrNo
</code>
Det går utmärkt att söka första i första selecten(Författare) och i andra(Författare2),
men inte i den sista. Förstår ni?
Hjälp skulle vara underbart....Sv: Klurig SQL
Sv: Klurig SQL
Det är så här, jag fick tag på en underbar ocr(listbox) där man kan färga text, bakgrund olika för varje rad.
Vad jag nu vill åstakomma är:
När det gäller författarna på melodiera så kan de vara ifrån en till tre per sångtext.
Om den förfataren jag pekar på(via en annan listbox) har skrivit denna texten själv, så vill jag markera detta med en anllunda färg.
Denna sql är kanon, men har en svaghet. om jag pekar på en författare som ligger som forfattare3, så visas den inte i listan, därimot om han ligger som forfattare2.
Det finns alltså ett fel någonstans i SQL:en som jag inte kan finna.
Förstår du nu???
PS
Detta är ögongodis.
DSSv: Klurig SQL
Nu är det alltså så här.
Det finns de melodier som enbart har en författare(forfattare), andra kan ha två eller tre stycken.
Men det är de förstnämda som jag vill åt, alltså melodierna som bara har en författare skall färgas och är det mer än en, så skall det inte färgas. När det bara finns en författare så ger ju Rst ifrån sig null-värde, och det är här som jag misslyckas.
Så här försöker jag:
i DO lopen:
<code>
If Not IsNull(Rst(4)) Then
lList1.AddItem Rst(0) & " " & " " & Rst(1)
Else
lList1.AddItem Rst(0) & " " & " " & Rst(1), , RGB(44, 8, 195), RGB(200, 234, 247)
End If
</code>
Så här "på pappret" så ser det ju riktigt ut, men den fungerar inte som den skall. Den färgar alldeles för många melodier, sådana som har mer än en författare
Om jag tar med Rst(4) (som är forfattare3) så får jag ett fel.
Vad tror ni?Sv: Klurig SQL
<Code>
If Not IsNull(Rst("Författare2")) Or Not IsNull(Rst("Författare3")) Then
lList1.AddItem Rst(0) & " " & " " & Rst(1)
Else
lList1.AddItem Rst(0) & " " & " " & Rst(1), , RGB(44, 8, 195), RGB(200, 234, 247)
End If
</code>