2012-04-03 4 views
0

У меня есть две таблицы один индекс, а другой является структура цен, как подMySQL покинул присоединиться

table: index 
columns: trandate, indexcode 

table: price 
Columns: truncate, symbol, price 

Я хочу знать, недостающую цену. Для этого я выполняю запрос:

select i.trandate,i.indexcode,p.trandate,p.price 
    from index i 
    left join price p on i.trandate = p.trandate 
where p.symbol='ABC' and indexcode="New" 

Этот запрос не показывает нулевую дату, даже если различные цены недостающую в ценовой таблице. Единственная причина, по которой я понимаю, - это то, что таблица индексов не имеет поля символа, поэтому ... но согласно теории, если вы хотите показать все строки одной таблицы и только значение соответствия другой таблицы, используйте левое или правое соединение запрос ... пожалуйста, кто-нибудь может помочь?

+0

Это плохо обрамлении вопрос. Пожалуйста, укажите, когда вы создадите свой вопрос. –

+0

indexcode = "Новый" Должен быть i.indexcode ?? Опечатка Ошибка ?? и является trandate типа DATETIME или только DATE? –

+0

Можете ли вы разместить некоторые данные образца и фактические/ожидаемые результаты? –

ответ

1

, если вы сделаете это

where p.symbol='ABC' and indexcode="New" 

вы получите только хиты, которые соответствуют этому. Поэтому у всех их должен быть символ «ABC». Теперь я не уверен, почему вы ожидаете, что ваши значения NULL будут присутствовать, если вы это сделаете, но я думаю, вы это имеете в виду?

where (p.symbol='ABC' OR p.symbol IS NULL) and indexcode="New" 
+0

я мимо требуемый результат и запрос генерируется необходимый результат \t \t \t Дата \t INDEXCODE \t Trandate \t Цена 29-Mar-92 \t новый \t 29-Mar-92 \t 61,9 30-Mar-92 \t новый \t нуль \t Null 31-Mar-92 \t \t новый 31-Mar-92 \t 61,9 Текущий запрос дает следующий результат \t \t \t 29-Mar-92 \t новый \t 29-мар-92 \t 61,9 31-Mar-92 \t \t 31-Mar-92 \t 61.9 – user1019538

+0

Это не подлежит обсуждению? вы могли бы вставить это в свой вопрос, используя теги кода и все? – Nanne

1

вы должны переместить условия, касающиеся таблицы left join ред к left joinON части:

select i.trandate,i.indexcode,p.trandate,p.price 
    from index i 
    left join price p on i.trandate = p.trandate and p.symbol='ABC' 
where indexcode="New" 
+0

Я изменяю заказ согласно вашему предложению не повезло. Я также добавляю i infront индексного кода. Я вставляю требуемый результат и генерирует запрос. – user1019538

+0

Ваш результат показывает, что запрос действительно работает. Вы должны искать не 'i.trandate', а для' p.trandate' (3-й столбец) - 'null'. Если вы хотите увидеть только отсутствующие цены, то добавьте в конец предложения where: 'AND p.trandate is null'. ура –

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