2014-01-28 4 views
0

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

Сценарий: Есть две таблицы. В одной таблице несколько столбцов, один из которых - VARCHAR (45) с именем «пользователь», а другой - INT, который называется «gid». Во второй таблице есть столбец первичного ключа с именем «gid» (INT) и столбец с именем «permissions», который является столбцом TEXT, и содержит значения, разделенные символом «;».

У меня есть имя пользователя и требуется текст в столбце разрешений. Текущий способ я делаю, получая gid из первой таблицы, а затем выполняя второй запрос с помощью gid, чтобы получить разрешения.

Я слышал, что есть другие способы сделать это, и я искал в Google, но я не уверен, что делать.

EDIT:

Как это:

enter image description here

+0

звучит так, как будто вы хотите СОЮЗ. Это поможет, если вы поделились запросами –

+0

Структура таблицы и используемый вами запрос были бы полезны –

+0

Я добавил структуру таблицы. – LeoTietz

ответ

1
select t2.permissions 
    from table1 t1, table2 t2 
where t1.user = '<SPECIFIED NAME>' 
    and t1.gid = t2.gid; 

или вы могли бы использовать INNER JOIN синтаксис:

select t2.permissions 
    from table1 t1 
    inner join table2 t2 on t1.gid = t2.gid 
where t1.user = '<SPECIFIED VALUE>' 
+3

horrible - использовать современные соединения не научить нового пользователя этой 30-летней дерьме – Hogan

+0

вместо жалобы, вы могли бы дать альтернативу: 'select t2.permissions from table1 t1 inner join table2 t2 on t1.gid = t2. gid где t1.user = '<УКАЗАННОЕ ЗНАЧЕНИЕ>' ' И 30 летняя дерьма отлично работает, кстати. – Ronald

+0

Я дал альтернативу. – Hogan

0

Для этого вы используете JOIN. Соединение соединяет две таблицы в инструкции select.

Как это

select * 
from usertable u 
join permissiontable p on u.gid = p.gid 

Это даст вам все столбцы из обеих таблиц с колонки ID присоединился. Вы можете обрабатывать объединенную таблицу так же, как и любую таблицу (например, выбрать поднабор столбцов в списке выбора, добавить предложение where и т. Д.).

Подробнее о присоединениях можно прочитать в любой встроенной книге sql или выполнить поиск в Google.

+0

Зачем выбирать 4 миллиона столбцов, если требуется только один столбец? Влияют ли ваши системы на слишком большую неиспользуемую пропускную способность сети? – Ronald

+0

@ Ronald - Вы пропустили часть моего ответа, где я сказал *, выберите подмножество столбцов *? – Hogan

+0

изменить 'uid' на' gid' – carexcer

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