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

    [PHP - MY SQL] Query con confronto campi.

    Ciao a tutti.

    Effettuo una query per visualizzare i miei prodotti più recenti.

    Codice PHP:
    SELECT p.products_idp.products_modelpd.products_namepd.products_urlpd.products_descriptionp.products_imagep.products_date_addedp.products_last_modifiedp.products_statusp2c.categories_id FROM products pproducts_description pdproducts_to_categories p2c WHERE p.products_id pd.products_id AND p.products_id p2c.products_id ORDER BY p.products_date_added LIMIT $start,$step 

    I campi in questione sono:
    products_date_added; products_last_modified.

    Ho pensato di risolvere al momento dell'immissione del prodotto nel catalogo con l'inserimento nel campo products_last_modified della stessa data di inserimento e spostare l'ORDER BY sul campo products_last_modified.

    Ma non credo sia la soluzione ottimale. Così sono a chiedere qualche consiglio.

    Come devo impostare la query per far visualizzare il prodotto più recente?

    Dimenticavo al momento il campo products_last_modified viene considerato null in fase di inserimento prodotto

  2. #2
    Ciao,

    la soluzione che hai pensato può andar bene, ma dipende da come gestisci i prodotti.
    Se per te un prodotto inserito un mese fa e che oggi hai editato per un qualsiasi motivo è da considerare "nuovo", allora questa soluzione va bene e puoi ordinarli solo per data di modifica impostandola uguale a quella di inserimento.
    Se i prodotti nuovi sono invece solo quelli con data di inserimento più recente, ordinali per data di inserimento e poi per data di modifica (se ti interessa anche questo criterio).

    La query che hai inserito mi sembra corretta, a parte il fatto che mi pare ordini al contrario, ovvero dal più vecchio al più recente.

    Alessandro
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  3. #3
    Grazie Magicale, si in effetti ordina al contrario. Ho provveduto ad aggiungere DESC dopo il campo data.

    il mio problema è però proprio questo. In questo caso sono io che scelgo se utilizzare il campo data inserimento piuttosto che il campo data ultima variazione.

    Io preferirei che fosse la query a tirar fuori la data più recente tra tutte e due i campi.

    La mia soluzione certo andrebbe bene per questa situazione, ma siccome cerco di imparare sempre qualcosa volevo capire, da qualcuno più esperto di me, se esiste una soluzione più "tecnica".

    Grazie ancora.


  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Con un if puoi recuperare la data maggiore tra i due campi e ordinare su di essa.

    codice:
    select *,if(data_inserimento>data_modifica or data_modifica is null,data_inserimento,data_modifica) as recente
    from tabella order by recente desc

  5. #5
    Grazie Nicola, un'altra piccola pillola di conoscenza...


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.