![]() |
Jag håller på att sätta upp en sida som är i princip färdig förutom att jag inte får ordning på en liten sql sak.
Jag har ett artikelsystem där inloggade användare skall kunna markera en artikel som läst, vilket gör att den aldrig mer visas för just den användaren. Som det ser ut nu så har jag en tabell som heter "artiklar" och en som heter "lasta_artiklar". Under artiklar har jag följande fält: id, art_txt, user_id, created. Under lasta artiklar har jag: id, art_id, user_id. Jag vill få ut en sql sats som gör att den listar alla artiklar förutom de som användaren har satt som lästa, dvs de som har samma art_id i "lasta_artiklar" som id i "artiklar och med samma user_id som den inloggade användaren. Bör jag bygga om mina tabeller eller går det att lösa smidigt på något sätt? |
Kod:
SELECT a.* FROM artiklar AS a LEFT JOIN lasta_artiklar AS la ON la.art_id = a.id AND la.user_id = 17 WHERE la.id IS NULL; |
Super, tack så mycket!!
|
En fråga till, kan man få order by random på en sådan sql sats? Jag har provat mig fram men inte lyckats få till det. Limit får jag in, men inte random...
|
Jag ser ingen anledning varför du ska ha user_id i artikel-tabellen.
Det räcker gott med att du lagrar user_id och art_id i lasta_artiklar-tabellen, då har du all info du behöver, du behöver inte heller ha ett eget id i lasta_artiklar-tabellen eftersom art_id och user_id tillsammans blir en unik nyckel. user_id i artikeltabellen är en felaktig normalisering som jag ser det, id i lasta_artiklar är bara överflödig information. Tabellerna behöver bara följande kolumner: Kolumner i Artiklar: art_id, art_txt, created. Kolumner i Lasta_Artiklar: art_id, user_id. Kolumner i User: user_id. Kod:
SELECT ** |
Citat:
MSSQL: ORDER BY NEWID() Mvh |
ConnyWesth: Det beror ju helt och hållet på vad user_id i artikel databasen är. Min gissning är att det är användaren som skapat artikeln så kan du ju inte plocka bort den.
|
Alla tider är GMT +2. Klockan är nu 18:38. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson