Newsgroup: it.comp.software.database
Titolo: Join?

Ciao,
ho un altro problema, stavolta più semplice:
Ho un database MySQL di nome ARCHIVIO. in ARCHIVIO ci sono due tabelle:
Autori e Foto. Descrivo brevemente le due tabelle:
Autori
===
idA INT PRIMARY KEY AUTO_INCREMENT
nome varchar(64)
pass varchar(12)
mail varchar(64)
Foto
===
idF INT PRIMARY KEY AUTO_INCREMENT
idA INT (l'idA dell'autore della foto, ogni autore può inserire più foto nel
database)
nome_file varchar(64)
date datetime
il legame tra le due tabelle è costituito dalla colonna idA presente in
entrambe che permette di associare ad ogni foto l'autore e, naturalmente, ad
ogni autore le foto da lui scattate. Ora viene il problema:
Se io voglio mostrare 30 di queste immagini accompagnate da nome e mail
dell'autore come posso fare?
Risposta 1) Il modo più semplice sarebbe trovare le 30 immagini con un
SELECT ecc... e fare quindi 30 ricerche per reperire per ognuna il nome e la
mail dell'autore.
Risposta 2) Usare un JOIN (si chiama così?) come mi è stato consigliato, ma
io non so assolutamente come si usi e che cosa sia! Se qualcuno me lo
spiegasse io sarei molto felice e alleggerirei un po' il lavoro al mio pc.
Ciao,
Gio.Fresa

 dell'autore come posso fare?
SELECT nome_file.foto, date.foto, nome.autori, mail.autori FROM foto, autori
WHERE foto.idA = autori.idA LIMIT 30
facendo in questo modo si effettua il prodotto cartesiano delle due tabelle
(considera ogni tabella come un insieme) e dei record risultati si prendono
soltato quelli che soddisfano la condizione "foto.iaA = autori.idA".
Ad esempio considera due tabelle tabA e tabB strutturate in questo modo:
tabA:
idA       fieldA
1         "CIAO"
2         "MIAO"
3         "BAU"
tabB:
idB       idA          fieldB
1         1            "UOMO"
2         3            "GATTO"
3         2            "CANE"
Con una query come: "SELECT idA.tabA, idA.tabB , fieldA.tabA, fieldB.tabB
FROM tabA, tabB" si ottiene una roba del tipo:
risultato:
idA.idB  idA.tabB   fieldA       fieldB
1        1            "CIAO"       "UOMO"
1        3            "CIAO"       "GATTO"
1        2            "CIAO"       "CANE"
2        1            "MIAO"       "UOMO"
2        3            "MIAO"       "GATTO"
[...]
Di tutto questo ti interessano le righe che soddisfino la relazione "suono
emesso da". Queste righe sono quelle che soddisfano la condizione idA.idA =
idA.idB, cioe':
"SELECT idA.tabA, idA.tabB , fieldA.tabA, fieldB.tabB FROM tabA, tabB WHERE
idA.tabA = idA.tabB"
Ti consiglio comunque di leggerti qualcosa su questo. Prova a guardare sulla
documentazione di mysql perche' ci sono anche molti altri modi per mettere
in relazione due tabelle.
byez
keii.


Non conosco MySQL, e' corretto inserire prima il nome del campo e poi
il nome della tabella ? (SELECT CAMPO1.TABELLA FROM ...) In SQL
standard non e' cosi'.
Grazie
Ciao 
Massimo
----------------------------------------------------------
Il vero problema non è tanto sapere se le macchine pensano
bensì se gli uomini pensano. B.F. SKINNER (1904-90)
----------------------------------------------------------

 standard non e' cosi'.
Infatti non funziona neanche su mysql. Mi sono sbagliato a scrivere ^_^
byez
keii.

Vi ringrazio moltissimo, ho chiarito molte cose.
Alla prossima,
Gio.Fresa