FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
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? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
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; |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
Super, tack så mycket!!
|
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Nykomling
|
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...
|
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Klarade millennium-buggen
|
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 ** FROM * * artiklar WHERE *id NOT IN(SELECT art_id FROM Lasta_artiklar WHERE *user_id = 17); |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Citat:
MSSQL: ORDER BY NEWID() Mvh |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Mycket flitig postare
|
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.
|
||
![]() |
![]() |
Svara |
|
|