Отличная Помощь - PullRequest
       23

Отличная Помощь

0 голосов
/ 11 июня 2009

Хорошо, у меня есть таблица, в этой таблице два столбца с идентификаторами. Я хочу выделить один из столбцов, и как только он станет отличным, выберите все из второго столбца определенного идентификатора.

Первоначально я пытался:

select distinct inp_kll_id from kb3_inv_plt where inp_plt_id = 581;

Однако это сначала делает предложение where, а затем возвращает различные значения.

В качестве альтернативы:

select * from (select distinct(inp_kll_id) from kb3_inv_plt) as inp_kll_id where inp_plt_id = 581;

Однако этот столбец не может быть найден inp_plt_id, так как отличный возвращает только столбец, а не всю таблицу.

Есть предложения?

Edit:

Каждый kll_id может иметь один или несколько plt_id. Я хотел бы получить уникальные kll_id для определенного идентификатора kb3_inv_plt.

| inp_kll_id | inp_plt_id |
|       1941 |      41383 |
|       1942 |      41276 |
|       1942 |      38005 |
|       1942 |      39052 |
|       1942 |      40611 |
|       1943 |       5868 |
|       1943 |       4914 |
|       1943 |      39511 |
|       1944 |      39511 |
|       1944 |      41276 |
|       1944 |      40593 |
|       1944 |      26555 |

Ответы [ 3 ]

2 голосов
/ 11 июня 2009

Если вы подразумеваете, что под «различением» «выбираете только inp_kll_id s, которые происходят только один раз» (не семантику SQL для Distinct), это должно работать:

select inp_kll_id
 from kb3_inv_plt
 group by inp_kll_id
 having count(*)=1 and inp_plt_id = 581;
1 голос
/ 11 июня 2009

Сначала получите все отличные (псевдоним 'a' в моем следующем примере), а затем присоедините их обратно к таблице с указанными критериями (псевдоним 'b' в моем следующем примере).

SELECT      *
FROM        (
            SELECT 
            DISTINCT    inp_kll_id 
            FROM        kb3_inv_plt 
            ) a
LEFT JOIN   kb3_inv_plt b
        ON  a.inp_kll_id = b.inp_kll_id
WHERE       b.inp_plt_id = 581
0 голосов
/ 11 июня 2009

в этой таблице два столбца с Идентификаторы. Я хочу сделать один из столбцы различны, и как только это ясно, чтобы выбрать все из второй столбец определенного идентификатора.

SELECT distinct tableX.ID2
FROM tableX
WHERE tableX.ID1 = 581

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

Делая строку отдельной, вы гарантируете, что другие строки не будут точно такими же. Вы не делаете отдельный столбец. Допустим, в вашей таблице есть эти данные:

ID1   ID2
10    4
10    3
10    7
4     6

Когда вы выбираете отдельный ID1, ID2 - вы получаете то же самое, что и select *, потому что строки уже различны.

Можете ли вы добавить информацию, чтобы прояснить, что вы пытаетесь сделать?

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