[MySQL] SQL SELECT restituisce più valori del dovuto

Discussione in 'MySQL' iniziata da daniele8808, 10 Agosto 2017.

Tag (etichette):
  1. daniele8808

    daniele8808 Nuovo Utente

    Registrato:
    9 Agosto 2017
    Messaggi:
    2
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Salve a tutti, sto avendo dei problemi con una query SELECT, che invece di restituirmi un solo valore, me ne restituisce troppi. Qui di seguito il codice:

    SELECT DISTINCT costi.id, costo, descrizione, categoria
    FROM costi
    INNER JOIN categorie
    WHERE costi.id = $_POST['id'];
    La query pesca dati da un DB con due tabelle costi e categorie (IMG LLEGATA).

    Il problema che sto avendo è che se per esempio eseguo la query su PHP my admin (inserendo al posto di $_POST['id'] l'ID di un costo tipo 140), invece di tornarmi indietro soltanto una riga con i dati associati, me ne tornano indietro due (una per ogni categoria che ho creato).
    Sono righe identiche, con gli stessi valori, ad eccezione del campo categoria che è diverso.

    Qualcuno può aiutarmi?
     

    Files Allegati:

    • DB.jpg
      DB.jpg
      Dimensione del file:
      204,9 KB
      Visite:
      9
  2. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    1.727
    Mi Piace Ricevuti:
    63
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    PHP:
    SELECT DISTINCT
       co
    .id
      
    ,co.costo
      
    ,co.descrizione
      
    ,ca.categoria
    FROM costi co
    INNER JOIN categorie ca ON co
    ,idcategoria=ca.id
    WHERE co
    .id $_POST['id'];
    considera che "inner join" estrae gli elementi che sono presenti nelle due tabelle (intersezione)
    forse è meglio usare "left join" che estrae tutti i costi restituendo null se non trova la categoria (anche per certezza del risultato)
    se tutti i costi hanno una categoria valida (con certezza), è indifferente "inner" o "left"
     
    A daniele8808 piace questo elemento.
  3. daniele8808

    daniele8808 Nuovo Utente

    Registrato:
    9 Agosto 2017
    Messaggi:
    2
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao Grazie della risposta, mi sono reso conto che ho omesso l'ON nella query scrivendola a questo modo ora restituisce il valore corretto:

    SELECT costi.id, costo, descrizione, categoria
    FROM costi
    INNER JOIN categorie
    ON idcategoria = categorie.id
    WHERE costi.id = 140

    In questo modo mi restituisce il dato che mi occorreva.
    Grazie cmq
     
Sto caricando...

Condividi questa Pagina