webForumDet fria alternativet

Hämta tidningar och böcker men med limit 1 på tidningar - i samma sats

Databaser & SQL

5 svar · 571 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Jag vill hämta fram böcker och tidningar från ett visst förlag. Alla böcker ska visas men bara den senast utkomna tidningen. Jag skulle kunna göra ungefär så här:

SELECT produktnamn FROM produkter WHERE forlag = 12 AND produkttyp = 'tidning' ORDER BY datum DESC LIMIT 1

...och sen köra en till sats:

SELECT produktnamn FROM produkter WHERE forlag = 12 AND produkttyp = 'bocker' ORDER BY datum DESC

Men eftersom jag har en pagingfunktion skulle jag vilja slå ihop de här satserna. Låter det sig göras och i såna fall hur?
Tack på förhand! :bire

Medlem sedan dec. 200012 464 inlägg
#2
SELECT produktnamn 
  FROM produkter 
 WHERE forlag = 12 
  AND ((produkttyp = 'tidning' 
  and datum in (select max(datum)
  from produkter 
  where forlag = 12
     and produktyp = 'tidning'))
   or produkttyp = 'bocker')
 ORDER BY datum DESC
Medlem sedan maj 2001797 inlägg
#3

Det ser jättebra ut, tack! Måste verkligen lära mig använda de där räknefunktionerna mer, och jag visste inte att MySQL fixar såna där nästlade satser? Glömde iofs säga att jag använder MySQL.
Tyvärr ligger Crystone, där vår hemsida finns, nere och man kommer inte ens in på deras hemsida så jag kan inte testa koden för tillfället.

Medlem sedan juni 20008 205 inlägg
#4

web00132 skrev:

jag visste inte att MySQL fixar såna där nästlade satser? Glömde iofs säga att jag använder MySQL.

Sen version 4.1 (d.v.s. sen rätt länge) gör den det :)

Medlem sedan maj 2001797 inlägg
#5

Lars: Funkar alldeles utmärkt, tackar!
spango: Tack, jag fick något slags hjärnsläpp. Har ju faktiskt använt mig av det tidigare tom. :bire

Medlem sedan jan. 20022 440 inlägg
#6

Markera gärnha som löst också ;)

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)