Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


в общем виде JOIN - аналог выбора из двух таблиц, связанных между собой по каким-то полям (полю)
SELECT a.id, b.qq FROM a_table a, b_table_b WHERE a.column1=b.column2;
можно записать, как *
SELECT a.id, b.qq FROM a_table a
JOIN b_table_b ON a.column1=b.column2;
(или, по крайней мере в постгресе можно еще сказать USING c, если с - поле связи, одинаково названное в обоих таблицах.

Дальше начинается самое интересное, когда можно присоединять не все данные одной, или другой таблицы
LEFT JOIN, RIGHT JOIN
Тут надо иметь в виду оптимизацию запросов в mysql
Дальше еще интересней, но, честно говоря, по-моему, это не должно работать : в постгресе (и, по-моему вообще по SQL-стандартам, поправьте кто-нибудь, если не так можно на связываемые таблицы наложить разные (в том числе и по order и group by условия), например: (кусок работающего примера из postgres-а)
Код: Выделить весь код
 
SELECT ............ 
FROM participant_view p 
JOIN 
 * *( 
 * * *SELECT 
 * *	 * *dst, src, 
 * *	 * *0- sum(amount) AS amount, 
	 * *currency 
 * * *FROM trlog 
 * * *WHERE 
 * *	stamp <= '%s' AND 
	status = %d GROUP BY dst, currency, src 
 * *) t ON (t.dst = p.id and t.src > 0) 
JOIN currency c ON (c.id=t.currency) 
 ...... 
 ORDER BY p.name
Вот. Собственно, когда я писала - имела в виду последний случай, но, боюсь, он в MySQL смысла не имеет
В твоем случае, скорее, для MYSQL можно использовать UNION


Отправлено: 09:53, 18-06-2004 | #6