Visualizzazione dei risultati da 1 a 6 su 6

Discussione: MySQL Query complicata

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786

    MySQL Query complicata

    Ciao,

    ho un db così strutturato:

    prodotti
    id
    prodotto

    categorie
    id
    categoria

    associa_categoria
    prodotto_id
    categoria_id
    voglio prendere gli ultimi 5 prodotti inseriti dalla tabella prodotti, che appartengano a più categorie (associa_categoria), evitando di prendere quelli della categoria es. 4-5-9-13
    ed evitando di proprorre più volte lo stesso prodotto.


    Grazie !
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  2. #2
    Spostato nella sezione corretta
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    1) per non riproporre lo stesso prodotto devi usare DISTINCT()
    2) per prendere gli ultimi 5 risultati devi fare COUNT() del numero dei risultati
    poi sottrarre 5 e poi fare NUMROW>=numero_con_5_sottratto
    Destinato alla gioia, l'uomo si nutre di noia

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    ho il db con i dati così:


    prodotti
    id prodotto
    1 mouse
    2 tastiera
    3 monitor
    4 stampante
    5 cartuccia
    6 tonner
    7 carta
    8 matite
    9 penne
    10 timbri
    ...

    categorie
    id categoria
    1 Informatica
    2 Cartoleria
    3 Ufficio
    4 Fai da Te
    ...

    associa_categoria
    prodotto_id categoria_id
    1 1
    1 3
    2 1
    2 3
    3 1
    3 3
    4 1
    4 3
    5 1
    5 3
    6 1
    6 3
    7 1
    7 2
    7 3
    8 2
    8 3
    9 2
    9 3
    10 2
    10 3
    ...

    devo prendere quindi gli ultimi 5 prodotti, tranne quelli presenti nella categoria con id 1, 6 e 8

    come faccio la querry ?

    grazie !
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    residenza
    Umbria
    Messaggi
    46
    Questa dovrebbe funzionare:

    codice:
    SELECT prodotto from associa_categoria, prodotti where id=prodotto_id
    AND categoria_id NOT IN ( 1, 6, 8 ) order by id DESC LIMIT 0 , 5
    La clausola NOT IN serve ad escludere le categorie che non vuoi, LIMIT 0,5 ti permette di leggere solo i primi cinque records e o order by id DESC è un trucchetto per fare in modo che gli ultimi divengano i primi.

    Non sono però sicuro se per "ultimi cinque" intendi le ultime cinque ID, se non è così devi cambiare solo il campo di ordinamento.
    sergio di sunelweb

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,786
    grazie di cuore

    ciao
    [Scambio Links a Tema] Contattatemi in Privato x + Info.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.