Odd query behavior...
От | Gregory Brauer |
---|---|
Тема | Odd query behavior... |
Дата | |
Msg-id | 3BFADE78.3090802@wildbrain.com обсуждение исходный текст |
Ответы |
Re: Odd query behavior...
|
Список | pgsql-general |
I have a question about the behavior of SELECT with multiple tables. Take this example... 4 tables, 2 related by 1 many-to-many table, and 1 unrelated table: CREATE TABLE TGroup ( id SERIAL PRIMARY KEY, name VARCHAR(16) UNIQUE ); CREATE TABLE TUser ( id SERIAL PRIMARY KEY, username VARCHAR(16) UNIQUE, password VARCHAR(16) ); CREATE TABLE TUnrelated ( id SERIAL PRIMARY KEY, something VARCHAR(16) UNIQUE ); CREATE TABLE TGroupTUserLink ( tgroup_id int4 NOT NULL, tuser_id int4 NOT NULL, UNIQUE (tgroup_id, tuser_id), UNIQUE (tuser_id, tgroup_id), FOREIGN KEY (tgroup_id) REFERENCES TGroup(id) ON DELETE CASCADE, FOREIGN KEY (tuser_id) REFERENCES TUser(id) ON DELETE CASCADE ); INSERT INTO TUser (username, password) VALUES ('bob', 'god'); INSERT INTO TUser (username, password) VALUES ('fred', 'sex'); INSERT INTO TGroup (name) VALUES ('user'); INSERT INTO TGroup (name) VALUES ('luser'); If I do a select from the TUser table, I get what is expected: test=# select TUser.username from TUser; username ---------- bob fred (2 rows) However if I do a select from both the TUser and TGroup tables, I get a product, even though I have expressed no joins: test=# select TUser.username from TUser, TGroup; username ---------- bob bob fred fred (4 rows) And finally, if I do a select from the TUser and TUnrelated tables, I get nothing, even though I have specified no joins: test=# select TUser.username from TUser, TUnrelated; username ---------- (0 rows) What is going on here? Why am I getting "products"? It appears to have something to do with how tables are related, but I don't understand the full reasoning behind it. I have done futher tests with a table that is related to a table that is related to yet another table that I am querying, and I no longer get a product, just the results I expect. Any help would be appreciated... Thanks. Greg Brauer greg@wildbrain.com
В списке pgsql-general по дате отправления: