MySQL присоединиться к вопросу - PullRequest
3 голосов
/ 04 декабря 2008

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

table1:

id, agent_name, ticket_id, category, date_logged

table2:

id, agent_name, department, admin_status

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

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

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

Любая помощь с благодарностью.

Ответы [ 3 ]

4 голосов
/ 04 декабря 2008

Я не совсем понимаю ваш вопрос ... Только таблица2 имеет отдел, единственное, что у них общего, это имя_агента.

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

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

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

SELECT * FROM Table1 
      INNER JOIN Table2 
      ON Table1.agent_id = Table2.id 
      WHERE Table2.department = 'somespecific value';
0 голосов
/ 04 декабря 2008

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

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

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

0 голосов
/ 04 декабря 2008

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

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

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

Кстати, объединения - это самый простой конец спектра SQL:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...