2008-12-04 3 views
3

У меня есть две таблицы со следующими столбцами:MySQL присоединиться вопрос

Table1:

id, agent_name, ticket_id, category, date_logged 

TABLE2:

id, agent_name, department, admin_status 

То, что я пытаюсь добиться, чтобы выбрать все строки table1, где отдел агентов равен таковому в таблице2.

Я пробовал несколько разных заявлений о соединении, но я либо неправильно понял синтаксис, либо просто не будет работать с этой настройкой таблицы. Я начинающий, когда дело доходит до MySQL и от того, что я прочитал JOIN, находится на сложном конце спектра!

Еще один вариант, который я рассмотрел, - это дублирование столбца «department» в таблице1, но для внешнего интерфейса потребуется немного больше кодирования, и я пытаюсь понять, могу ли я достичь желаемого результата, не делая этого.

Любая помощь очень ценится.

+0

+1 для сброса до 0; Я не понимаю, почему кто-то отказался от этого? – 2008-12-04 11:19:17

+0

Спасибо Stein Gauslaa Strindhaug за очень полезную ссылку, подняв мой вопрос и предоставив решение, которое я искал. Прошу прощения, если мой первоначальный вопрос был не совсем совершенным! – suitedupgeek 2008-12-04 11:24:05

ответ

4

Я не совсем понимаю ваш вопрос ... Только у table2 есть отдел, единственное, что у них есть, это agent_name.

Я подозреваю, что вы действительно имеете в виду: вы хотите, чтобы все строки из таблицы 1, где агент из определенного отдела, это то, что вы хотите? В таком случае, что-то вроде этого следует сделать это (не проверял, хотя):

SELECT * FROM Table1 
     INNER JOIN Table2 
     ON Table1.agent_name = Table2.agent_name 
     WHERE Table2.department = 'somespecific value'; 

BTW: (Вдохновившись тем, что кто-то сказал) agent_name звучит как это строковое значение, вы действительно должны рассмотреть вопрос об использовании id из таблицы2 как ключ в таблице1 (назовем это agent_id), чтобы связать их вместе. Внешние ключи (связь между таблицами) должны быть реальным уникальным идентификатором. Отдел также должен быть ключевым ключом. Тогда это будет:

SELECT * FROM Table1 
     INNER JOIN Table2 
     ON Table1.agent_id = Table2.id 
     WHERE Table2.department = 'somespecific value'; 
1

Проверьте это, это лучшие объяснения из SQL объединений я никогда не находило: A Visual Explanation of SQL Joins (она написана кем-то так пользователь, вероятно, слышал;)

0

Хотя я не могу точно понять, что вам нужно и как это таблица, связанная, я бы попытался коснуться похож:

select 
    a.id, a.agent_name, a.ticket_id, 
    a.category, a.date_logged, b.department 
from 
    table1 a inner join table2 b on b.agent_name=a.agent_name 

в настоящее время я предполагаю, что вы должны связать таблицы на AGENT_NAME.

КСТАТИ соединения являются наиболее простым концом спектра SQL :)

0

Вы migth хотите добавить уникальный реляционный ключ из двух таблиц вместо использования имени агента в обеих. Что-то вроде этого:

Table1: id, agent_id, ticket_id, category, date_logged 
Table2: agent_id, agent_name, department, admin_status 

SQL-пример:

SELECT t2.agent_name, t1.date_logged FROM table1 t1 
INNER JOIN table2 t2 ON t2.agent_id = t1.agent_id 

Однако вы можете использовать какой-то внешнее соединение, так что я предлагаю вам взглянуть на некоторые статьи через Интернет.

Смежные вопросы