[MySQL] SQL SELECT restituisce più valori del dovuto

daniele8808

Nuovo Utente
9 Ago 2017
3
0
1
35
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?
 

Allegati

  • DB.jpg
    DB.jpg
    204,9 KB · Visite: 447
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"
 
  • Like
Reactions: daniele8808
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
 

Discussioni simili