Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [MySQL] Problema con query SQL

    Ciao!

    Ho un problema con una query. vorrei fare una select tra due tabelle:

    utenti
    id | nome | categoria_id | categoria2_id

    categorie
    id_cat | nome_cat


    Io vorrei con una sola query ottenere un record del genere:
    id | nome | nome_cat | nome_cat2

    utilizzando questa:
    SELECT * FROM utenti INNER JOIN categorie ON id_cat=categoria_id OR id_cat=categoria2_id WHERE id = $id LIMIT 1
    ottengo due record... giustamente!


    Come potrei fare?

    Grazie
    Ciao

  2. #2
    mmmm....mmmm

    fai una LEFT/RIGHT join...e prova

    ma non so se va

  3. #3
    No... mi tira sempre fuori due record...

  4. #4
    [supersaibal]Originariamente inviato da daviweb
    No... mi tira sempre fuori due record... [/supersaibal]
    Prova a raggruppare per utenti id. Dovrebbe dartene solo uno nel caso siano vere entrambe le condizioni in OR.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utilizzando questa:

    SELECT * FROM utenti INNER JOIN categorie ON categoria_id=id_cat OR categoria2_id=id_cat WHERE id = $id

    ricavo due record.


    ...aggiungendo LIMIT 1 oppure GROUP BY id, mi tira fuori solo un record. Il fatto è che in quel record ho il nome di una sola categoria, io vorrei ottenere sia quella di categoria_id, sia quello di categoria2_id.


    Grazie

  6. #6
    se ho capito bene come è la tua struttura, le condizioni vanno messe in AND, non in OR

  7. #7
    No... dovrebbe essere giusto OR. Infatti se metto AND non mi tira fuori niente.

  8. #8
    [supersaibal]Originariamente inviato da daviweb
    No... dovrebbe essere giusto OR. Infatti se metto AND non mi tira fuori niente. [/supersaibal]
    Guarda che non e' affatto chiaro quello che dici, anche perche' poi citi campi che nel primo post non ci sono..... Vuoi una sola riga, ma le righe debbono essere due..
    ...aggiungendo LIMIT 1 oppure GROUP BY id, mi tira fuori solo un record. Il fatto è che in quel record ho il nome di una sola categoria, io vorrei ottenere sia quella di categoria_id, sia quello di categoria2_id.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Forse non è possibile fare quello che chiedo... lo chiedo proprio perchè io non saprei come fare.

    Cmq provo a spiegarmi meglio:

    tabella utenti
    id | nome | categoria_id | categoria2_id

    tabella categorie
    id_cat | nome_cat


    Io vorrei con una sola query ottenere un solo record in cui ci sia: l'id e il nome dell'utente, il nome della prima categoria e il nome della seconda.
    Un po' come se ad un record della tabella utenti sostituissi i valori di categoria_id e categoria2_id con i loro rispettivi nomi.

    Se non sono stato chiaro ditelo!


    A questo punto la domanda è: è possibile?

    Io tentavo solo di ottimizzare il codice limitando il numero di query... Se non si riesce farò un'ulteriore query per ricavare i nomi delle due categorie, non sarà un problema.

  10. #10
    Non guardo quello scritto sinora, presumendo che
    utenti.categoria_id = categorie.id_cat
    codice:
    SELECT u.*, c.nome_cat
    FROM utenti u
    left Join categorie c
    ON c.id_cat = u.categoria_id
    where u.id = '$id'
    prova cosi'....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.