2013-03-15 3 views
-4

Table StructureВыберите из 2 таблиц

Я выбирающих из LOG_TABLE user_idchanges но при выборе я хочу user_id соответствовать username в USER_NAME таблице, где корочки LOG_TABLE и USER_TABLE матча.

+1

Post запрос ... –

ответ

3

Я обеспечить дополнительный ответ здесь, так как вы только начинаете. Этот код INNER JOIN будет выбирать каждую строку из LOG_TABLE, которая имеет совпадение в USER_TABLE.

SELECT l.id, l.changes, u.username 
FROM LOG_TABLE l 
INNER JOIN USER_TABLE u ON u.id = l.user_id 

Если вы хотите, чтобы выбрать из LOG_TABLE, но на самом деле не волнует, если он имеет матч в USER_TABLE или нет, вы могли бы сделать LEFT JOIN вместо:

SELECT l.id, l.changes, u.username 
FROM LOG_TABLE l 
LEFT JOIN USER_TABLE u ON u.id = l.user_id 

При написании JOIN , всегда полезно четко указывать ключевые слова и условия JOIN. Если вы используете неявный JOIN (таблицы, перечисленные после предложения FROM, разделенные запятой), вы рискуете создать Cartesian Product, если предложение WHERE случайно опущено.

Дело в точке, вот вопрос, где используется OP запятая разделенных РЕГИСТРИРУЙТЕСЬ нотации, и случайно создал декартово произведение: MySQL Query - Join Issues

+0

спасибо, просто что мне нужно – kajab

2

Что вы хотите, это ПРИСОЕДИНЯЙТЕСЬ. Проверьте http://dev.mysql.com/doc/refman/5.0/en/join.html Для этого конкретного примера, что-то вроде этого является то, что вы хотите:

SELECT l.changes, u.username 
FROM LOG_TABLE l, USER_TABLE u 
WHERE u.id=l.user_id 
1
SELECT l.changes, u.username 
FROM LOG_TABLE l 
JOIN USER_TABLE u on u.id=l.user_id 
Смежные вопросы