Query del principiante

di il
3 risposte

Query del principiante

Come da oggetto ho una domanda che potrà sembrarvi banale ma per me che stò iniziando a provare mysql per diletto non lo è.
Ho il classico esempio di tre tabelle
tabella autori:id, nome_autore
tabella oggetti:id,nome_oggetto,descrizione_oggetto
tabella oggetti_autori:id, id_autore,id_oggetto
L'ultima tabella collega gli autori agli oggetti.
Ogni autore può creare più oggetti ed ogni oggetto può avere più autori.


La domanda è questa:
Posso, con una sola query, (con più query ci sono arrivato) estrarre nome_autore, nome_oggetto, descrizione_oggetto e oggetti_autori.id partendo da nome_autore e nome_oggetto?
Tipo SELECT .... WHERE autori.nome_autore LIKE %valore_inserito% AND oggetti.nome_oggetto LIKE %valore_inserito_1% .
O il database con cui stò giocando nella realtà non esisterebbe perchè è progettato male.?

Grazie

3 Risposte

  • Re: Query del principiante

    SELECT nome_autore,nome_oggetto,descrizione_oggetto,id_oa FROM autori a JOIN oggetti_autori b JOIN oggetti o ON a.id = b.id_autore AND o.id = b.id_oggetto WHERE nome_autore = ? AND nome_oggetto = ?
    puoi provare con una query di questo tipo.
  • Re: Query del principiante

    Domani provo, ora vado a letto, grazie.
  • Re: Query del principiante

    Grazie, funziona perfettamente.
    Non ho capito perchè il linguaggio necessita degli alias quando potrebbe usare sempre i nomi di tabella ma và bene così.
    Ho provato a fare delle prove, trovo sql particolarmente potente, ma non capisco la logica che ci stà dietro. Ho provato ad invertire le join ma non funziona ci deve essere un criterio che stabilisce quale tabella usare per prima etc. Nel recuperare i dati con php inoltre utilizzavo l'alias della tabella.nome_campo e non funzionava, voleva solo il nome del campo, insomma devo leggermi qualcosa che mi chiarisca le idee. Hai qualche suggerimento su quale lettura, un profano, possa fare?
    Ciao e grazie ancora
Devi accedere o registrarti per scrivere nel forum
3 risposte