SQL, где предложение игнорируется - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть 2 таблицы:

pf_master
temp_table

макет pf_master равен

username
pf_name
pf_id

, а данные в pf_master -

username  pf_name  pf_id
-------------------------
xyz       General  3
xyz       Overall  0
abc       General  3

макет временной таблицы -

pf_id
inv_val
curr_val
xirr
loginid
timestamp

и значения во временной таблице:

pf_id   inv_val   curr_val    xirr    loginid    timestamp
--------------------------------------------------------------------
0       100       200         10%     xyz        2019-04-06 12:21:28
3       100       300         11%     xyz        2019-04-06 12:21:40

Я хочу получить все записи пользователя 'abc' вместе с именем pf_name.Но у 'abc' нет записей в temp_table, поэтому в идеале этот запрос должен возвращать NULL.Но он возвращает значение пользователя 'xyz'.

Мой SQL-код:

SELECT 
    pf_master.pf_name, 
    temp_table.inv_val, temp_table.curr_val, temp_table.xirr 
FROM 
    temp_table 
INNER JOIN 
    pf_master ON pf_master.pf_id = temp_table.pf_id 
WHERE 
    pf_master.username = 'abc' 
ORDER BY 
    pf_master.pf_id ASC 

Где я ошибаюсь?

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

Вам нужно включить имя пользователя, а также pf_id в ваше объединение, поскольку pf_id само по себе недостаточно для идентификации уникального пользователя.

 SELECT 
        pf_master.pf_name, 
        temp_table.inv_val, 
        temp_table.curr_val,
        temp_table.xirr 
    FROM temp_table t
    JOIN pf_master  p 
      ON p.pf_id = t.pf_id 
     AND p.username = t.loginid
    WHERE 
        p.username = 'abc' 
    ORDER BY 
        p.pf_id ASC 
0 голосов
/ 06 апреля 2019

Сначала извлеките все записи из pf_master, где username = 'abc'

SELECT * FROM pf_master WHERE username = 'abc'

Затем измените предложение INNER_JOIN в своем вопросе, вместо всей таблицы pf_master вы должны использовать только результат извлечения

Примерно так:

 INNER JOIN
 (SELECT * FROM pf_master WHERE username = 'abc') AS tmp ON tmp.pf_id = tmp_table.pf_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...