Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499

    select Distinct ma necessito di tutti i record

    Mi sta scoppiando la testa, probabilmente mi sto perdendo in un bicchier d'acqua!
    Ho una uery cosi fatta:
    codice:
    $query = "SELECT * FROM ". $prefix ."immagini_video WHERE immagine != '0' AND video = '0' ORDER BY data DESC LIMIT 0,4";
    In pratica cerca nella tabella quei record che hanno il campo immagine diverso da 0 e video = 0! OK.
    Ad ogni record estratto, però, corrisponde un campo id che può essere per più record uguale ad uno stesso valore; inoltre c'è un campo data, quindi:
    IMMAGINE -- VIDEO -- ID -- DATA
    image.jpg -- 0 -- 2 -- 20/03/2006
    imag2.jpg -- 0 -- 3 -- 19/02/2006
    imag3.jpg -- 0 -- 2 -- 18/01/2006
    imag4.jpg -- 0 -- 2 -- 17/03/2006
    imag5.jpg -- 0 -- 1 -- 16/03/2006
    imag6.jpg -- 0 -- 2 -- 15/03/2006
    imag7.jpg -- 0 -- 4 -- 14/03/2006

    Cosi facendo io estraggo i primi 4 record in ordine di data, ma mi escono 3 immagini riferite al campo ID=2.
    Vorrei , invece, in questo caso, mostrare solo la più recente del campo ID=2 e una del campo ID=3.
    Io vorrei invece avere, sempre in questo caso, 1 dell'ID=2, 1 dell'ID=3, 1 dell'ID=1 e 1 dell'ID=4.

    Ho provato con il distinct ma mi da problemi per le funzioni successive della pagina perchè necessito di tutti i record per il conteggio dell'estrazioni, ecc...
    Come posso fare?

  2. #2
    Non so se ho capito bene il problema ma proverei con il GROUP BY.

  3. #3
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Perfetto, cosi funziona... mi ero proprio scordato del GRUOP BY.
    Ora aumento la difficoltà
    Prima avevo detto che per ogni record c'è un campo ID che può avere doppioni. In realtà c'è unaltro campo ID2 anch'sso con doppioni e stesso creiterio.
    L'unico vincolo è che se ID=0 --> ID è un numero diverso da 0 e viceversa.

    Se eseguo il GROUP BY ID AND ID2, non mi estrae nel modo corretto.
    Devo fare un controllo sui campi prima della query?

  4. #4
    nel GROUP BY non devi mettere la AND ma la virgola tra un attributo e l'altro

    ...
    ...
    GROUP BY attr1, attr2

  5. #5
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Mea culpa, questa siintassi!
    Sembra funzionare, devo avere il modo di controllare le risposte, ma a prima vista mi sembra a posto.

    Grazie mille!

  6. #6
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    C'è solo una cosa strana, anche facendo il test direttamente sul database con l'sql
    Mi estrae in modo corretto tutti i record, ma con il group by ordinata per data desc, mi vengono mostrati i record più vecchi e non gli ultimi inseriti.
    codice:
    $query = "SELECT * FROM ". $prefix ."immagini_video WHERE immagine != '0' AND video = '0' GROUP BY id_ltur, id_ivend ORDER BY data DESC LIMIT 0,4";

  7. #7
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    HO fatto delle prove ancora attravrso le sql di phpmyadmin.
    Se non utilizzo il group, mi vengono estratte per data in modo corretto. Se li estraggo con il group by, invece della più nuova mi estrae la più vecchia.

  8. #8
    ma non è che ti sei dimenticato di rimettere il DESC? Ovvero ORDER BY campo DESC

  9. #9
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    No caspita è questa la query che uso:
    codice:
    $query = "SELECT * FROM ". $prefix ."immagini_video WHERE immagine != '0' AND video = '0' GROUP BY id_ltur, id_ivend ORDER BY data DESC LIMIT 0,4";
    è davvero strano.
    Se metto l'ORDER BY prima del group by, ovviamente mi da errore nell'sql. :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 © 2025 vBulletin Solutions, Inc. All rights reserved.