Jag är inte så duktig på SQL så jag brukar använda access, skapa fråga i designläge och sedan koppierar jag den i sql-visningsläget. Såhär skulle man kunna göra: Tack för svaret Jag skrev tidigare att jag skalat bor en del i frågan för att göra den tydligare.Slå samman 2 frågor till en
Mitt problem nu är att få fram den datan jag vill, för att få fram den har jag fått skapa en fråga som bygger vidare på en annan fråga. Nu vill jag sammanfoga dom till en fråga som jag kan köra mot min mysql-databas.
Fråga 1 serut så här (den är döpt till "Olästa_medelanden steg1"):
SELECT lasta.idmed
FROM lasta
WHERE (((lasta.idanv)=[Vilken användare]));
Fråga 2 serut så här:
SELECT medelande.rubrik, medelande.idmed
FROM medelande LEFT JOIN [Olästa_medelanden steg1] ON medelande.idmed = [Olästa_medelanden steg1].idmed
WHERE ((([Olästa_medelanden steg1].idmed) Is Null));
En kort beskrivning på vad jag vill uppnå kanske kan vara bra också.
Jag har en tabell med ett antal medelanden.
När man läst medelandet skapas en ny post i en annan tabel som ett kvitto på att jag läst medelandet, det samlas kvitton från övriga användare i denna tabell också.
Jag vill filtrera fram de medelanden som jag ännu inte läst.
Det jag gör i fråga ett är att kolla vilka medelanden som jag läst.
I fråga två hämntar jag alla medelanden och filtrerar bort dom som finns med i fråga ett.
MVH
TorgnySv: Slå samman 2 frågor till en
SELECT rubrik, idmed FROM medelande WHERE NOTE idmed IN (SELECT idmed FROM lasta WHERE idanv=[Vilken användare])
Ett annat alternativ:
SELECT medelande.rubrik, medelande.idmed
FROM medelande LEFT JOIN (SELECT idmed FROM lasta WHERE idanv=[Vilken användare]) LastaMeddelanden ON medelande.idmed = LastaMeddelanden.idmed
WHERE LastaMeddelanden.idmed Is Null;
Jag tycker första alternativet är lite "snyggare" och mer beskrivande, tyvärr är MySQL riktigt långsam på den typen av frågor vid stora datamängder. Men jag tror inte du kommer få problem med det vid en sådan enkel fråga.
/JohanSv:Slå samman 2 frågor till en
Jag ska titta närmare på alternativ 2 om det är en snabbare fråga. Jag har nämmerligen föränklat i frågan jag ställde för att mitt problem skulle synas bättra.
Det är 2 tabeller till inblandade & sidan där resultatet ska visas är knutpungten/startsidan för det intranet jag försöker skapa.
Tack för detta svar & mera tipps är välkommna
MVH
TorgnyFör intresse klubben: Slå samman 2 frågor till en
Här är den färdiga koden som den serut i access där jag provkört den.
1. olästa interna
SELECT medelande.rubrik, medelande.idmed, anvandare.fnamn, anvandare.enamn, medelande.date, grupp.namn, medelande.idgru, medelande.typ
FROM ((medelande LEFT JOIN [SELECT idmed FROM lasta WHERE idanv=[Vilken användare]]. AS LastaMeddelanden ON medelande.idmed = LastaMeddelanden.idmed) INNER JOIN grupp ON medelande.idgru = grupp.idgru) INNER JOIN anvandare ON medelande.idanv = anvandare.idanv
WHERE (((LastaMeddelanden.idmed) Is Null) AND ((medelande.date)>[älstadatum]) AND ((medelande.idgru)=[vilken grupp byt mot IN]) AND ((medelande.typ)<>5));
2. olästa allmenna
SELECT medelande.rubrik, medelande.idmed, anvandare.fnamn, anvandare.enamn, medelande.date, grupp.namn, medelande.typ
FROM ((medelande LEFT JOIN [SELECT idmed FROM lasta WHERE idanv=[Vilken användare]]. AS LastaMeddelanden ON medelande.idmed = LastaMeddelanden.idmed) INNER JOIN anvandare ON medelande.idanv = anvandare.idanv) INNER JOIN grupp ON medelande.idgru = grupp.idgru
WHERE (((LastaMeddelanden.idmed) Is Null) AND ((medelande.date)>[som älst]) AND ((medelande.typ)=5));
har någon någon kommentar?
MVH
Torgny