Ciao lista, ho installato postgresql e ho inserito 3 tabelle tanto per provare delle query ma ho giá dei problemi per una query che va su tutte e 3 le tabelle.
Ecco le tabelle
user enrollment course
id id id name id_user name ... id_course ...
Come posso fare una semplice query che mi seleziona tutti i corsi di un utente sapendo il suo campo name? Ho provato con Join ma mi da sempre sintax error.
Grazie mille,
Enrico
On Jun 20, 2010, at 4:11 PM, Enrico Zanardo wrote:
Ciao lista, ho installato postgresql e ho inserito 3 tabelle tanto per provare delle query ma ho giá dei problemi per una query che va su tutte e 3 le tabelle.
Ecco le tabelle
user enrollment course
id id id name id_user name ... id_course ...
Come posso fare una semplice query che mi seleziona tutti i corsi di un utente sapendo il suo campo name? Ho provato con Join ma mi da sempre sintax error.
Grazie mille,
Enrico
Ciao,
prova a postarmi la query che fai cosi` posso provare a corregertela...
Bye, Chris.
PS: sintassi JOIN e` qui: http://www.postgresql.org/docs/8.4/static/queries-table-expressions.html#QUE...
É possibile fare un doppio JOIN?
SELECT course.* FROM course INNER JOIN enrollment, user ON course.id = enrollment.id_course WHERE enrollment.id_user = (SELECT user.id FROM user WHERE user.name = 'pippo');
----- Original Message ----- From: "Chris Mair" chris@1006.org To: "Linux User Group Bozen-Bolzano-Bulsan" lugbz-list@lugbz.org Sent: Sunday, June 20, 2010 4:43:47 PM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna Subject: Re: [Lugbz-list] Postgresql query
On Jun 20, 2010, at 4:11 PM, Enrico Zanardo wrote:
Ciao lista, ho installato postgresql e ho inserito 3 tabelle tanto per provare delle query ma ho giá dei problemi per una query che va su tutte e 3 le tabelle.
Ecco le tabelle
user enrollment course
id id id name id_user name ... id_course ...
Come posso fare una semplice query che mi seleziona tutti i corsi di un utente sapendo il suo campo name? Ho provato con Join ma mi da sempre sintax error.
Grazie mille,
Enrico
Ciao,
prova a postarmi la query che fai cosi` posso provare a corregertela...
Bye, Chris.
PS: sintassi JOIN e` qui: http://www.postgresql.org/docs/8.4/static/queries-table-expressions.html#QUE...
_______________________________________________ http://www.lugbz.org/mailman/listinfo/lugbz-list
É possibile fare un doppio JOIN?
Certamente, anche 20-uplo se vuoi.
SELECT course.* FROM course INNER JOIN enrollment, user ON course.id = enrollment.id_course WHERE enrollment.id_user = (SELECT user.id FROM user WHERE user.name = 'pippo');
Devi o usare sintassi ANSI (FROM A INNER JOIN B ON condizione):
select * from course inner join enrollment on (course.id = enrollment.id_course) inner join "user" on (enrollment.id_user = "user".id);
o sintassi breve (FROM A, B WHERE condizione)
select * from course, enrollment, "user" where course.id = enrollment.id and enrollment.id_user = "user".id;
ma non un mix tra le due.
La subselect che tenti di fare in fondo non serve. Come dicevo, puoi tranquillamente fare join multipli.
Ti faccio anche notare che il nome della tua tabella "user" e` una parola riservata e per questo motivo la devi escapare con le virgolette "".
Bye, Chris.
Grazie mille, ora provo le tue soluzioni e vedo quale utilizzare anche per il futuro. Non sapevo che user fosse una parola riservata. Grazie ancora.
Enrico
----- Original Message ----- From: "Chris Mair" chris@1006.org To: "Linux User Group Bozen-Bolzano-Bulsan" lugbz-list@lugbz.org Sent: Sunday, June 20, 2010 7:44:46 PM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna Subject: Re: [Lugbz-list] Postgresql query
É possibile fare un doppio JOIN?
Certamente, anche 20-uplo se vuoi.
SELECT course.* FROM course INNER JOIN enrollment, user ON course.id = enrollment.id_course WHERE enrollment.id_user = (SELECT user.id FROM user WHERE user.name = 'pippo');
Devi o usare sintassi ANSI (FROM A INNER JOIN B ON condizione):
select * from course inner join enrollment on (course.id = enrollment.id_course) inner join "user" on (enrollment.id_user = "user".id);
o sintassi breve (FROM A, B WHERE condizione)
select * from course, enrollment, "user" where course.id = enrollment.id and enrollment.id_user = "user".id;
ma non un mix tra le due.
La subselect che tenti di fare in fondo non serve. Come dicevo, puoi tranquillamente fare join multipli.
Ti faccio anche notare che il nome della tua tabella "user" e` una parola riservata e per questo motivo la devi escapare con le virgolette "".
Bye, Chris.
_______________________________________________ http://www.lugbz.org/mailman/listinfo/lugbz-list