Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [MySQL] primi 3 per ogni categoria

    Mi serve di trovare i primi 3 annunci per ogni categoria

    Ho due tabelle: annunci e una categorie
    con questa:
    codice:
    SELECT * FROM annunci RIGHT JOIN categorie
           ON aCat = catId
           ORDER BY catId, aDate DESC
    Ho tutti gli annunci e anche tutte le categorie dove non c'è nessun annuncio

    con questa:
    codice:
    SELECT * FROM 
           (SELECT * FROM annunci ORDER BY aDate DESC) AS annunciOrdData
           RIGHT JOIN categorie
           ON aCat = catId
           GROUP BY catId
           ORDER BY catId
    Ho l'ultimo annuncio in ordine di data per ogni categoria

    E se invece di solo il primo volessi anche il secondo e terzo per ogni categoria???

    Ci sto perdendo "la mia gioventù"

    Grazie a chi mi potrà aiutare (non vorrei fare union varie una per ogni categoria...)

  2. #2
    SELECT TOP 3 * FROM ecc. ecc.

    Ciao

  3. #3
    Originariamente inviato da varrilaro
    SELECT TOP 3 * FROM ecc. ecc.

    Ciao
    Eh, grazie, così mi seleziona i primi 3 della lista, indipendentemente che siano di categorie diverse o meno... (a parte che TOP in mySql non esiste...)


    Io vorrei che, se ho 10 categorie, mi selezioni 30 records, 3 per ogni categoria, gli ultimi inseriti.
    Esempio prendere
    codice:
    Cat | Data
     1   | 10/12
     1   | 09/11
     1   | 05/10
     2   | 10/12
     2   | 08/03
     2   | 01/01

  4. #4
    Chiedo venia data la tarda ora.....meno male che MySQL lo hai scritto a caratteri cubitali......allora tramite query non so aiutarti......spero mi perdoni l'errore.......
    buon lavoro

  5. #5
    Originariamente inviato da varrilaro
    Chiedo venia data la tarda ora.....meno male che MySQL lo hai scritto a caratteri cubitali......allora tramite query non so aiutarti......spero mi perdoni l'errore.......
    buon lavoro
    Ma che errore, è una svista, tanta manna che mi volevi dare una mano

    Beh, in mySQL non c'è TOP ma c'è limit che è praticamente meglio, anche si riuscisse a fare in ACCESS ci penserei poi io a tradurlo in MySql (per quello che posso).

    Si potrebbe fare con due query: nella prima estraggo tutti gli ID di categoria e poi faccio una nuova SQL concatenando tanti (scrivo in "PSEUDO ACCESS" per semplificare)

    codice:
    SELECT TOP 3 * FROM annunci WHERE cat = 1
    UNION
    SELECT TOP 3 * FROM annunci WHERE cat = 2
    UNION
    SELECT TOP 3 * FROM annunci WHERE cat = 3
    ..............
    Ma possibile che con tutte le potenzialità di sql non si riesca a fare una cosa tipo
    "FOR EACH catID IN categorie SELECT TOP 3 * FROM annunci ORDER BY data DESC" ???

    :master:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.