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

    Query per autocompleter,problemi con DISTINCT

    Ciao a tutti ragazzi devo creare un autocompleter che mi faccia comparire il nome delle persone presenti nella mia pagina dei messaggi privati (sia se loro sono i sender del messaggio che i receiver). Ovviamente di una persona posso aver ricevuto più messaggi ma comunque deve uscire 1 sola volta il suo nome... ho creato una query che funziona ma mi estrae il nome tante volte quanti sono i messaggi... posto la struttura delle tabelle:

    private_message:

    id_messaggio
    message_unique_id
    id_utente_sender
    id_utente_ric
    titolo_messaggio
    messaggio
    evidenza
    bloccato
    data_ora_messaggio
    letto
    iniziale
    esiste
    last_update


    utenti

    id
    username
    password
    email
    provincia
    citta
    temp
    regdate

    La query creata è la seguente:


    Codice PHP:
    $query="select DISTINCT p.*,u.username as nome from private_message as p
    inner join utenti as u on p.receiver_id= u.id
    where sender_id=
    $id_utente and evidence IN(0,2) and blocked = 0
    and initial_message = 1 and exist IN (1,3) and username like '
    $squadra%'
    union
    select  DISTINCT p.*,u.username from private_message as p
    inner join utenti as u on sender_id = u.id
    where receiver_id=
    $id_utente and evidence IN(0,1) and blocked = 0  
    and initial_message = 1 and exist IN (2,3) and username like '
    $squadra%'
    order by nome"

    come posso fare?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    La clausola distinct si estende a tutti i campi presenti nella select. Se ti servono solo i nominativi rimuovi p.* da entrambe le query che unisci.

  3. #3
    GRANDISSIMO ora va alla grande!!!!!

    Scusami ma quale era precisamente il problema così se mi ricapita so dove mettere le mani?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Come ti ho scritto poco fa la clausola distinct si propaga a tutti i campi presenti nella select, quindi se anche il valore di un solo campo differisce da quello di un altro record, vengono considerati differenti.

    Esempio banale

    codice:
    select distinct 'aaa','bbb','ccc'
    union
    select distinct 'aaa','bbb','ddd'
    union
    select distinct 'aaa','bbb','ccc'
    Risultato
    aaa bbb ccc
    aaa bbb ddd


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.