2014-01-09 2 views
0

мой запрос:Как удалить Перед фильтр SQL QUERY

SELECT * 
FROM tvn_Listing 
LEFT JOIN tvn_ListingOption ON (tvn_Listing.id = tvn_ListingOption.listings_id 
           AND tvn_ListingOption.options_id = 12) 

Как удалить пустую запись, когда я оставил присоединиться два стола? Мой запрос возвращает результат, который не соответствует условиям.

+0

Ваш вопрос не ясен. Можете ли вы привести пример данных и вывода? –

+0

Вы пробовали 'NOT NULL'? – 735Tesla

ответ

0

Если я понять Ваш вопрос правильно проблема:

Вы получаете записи из tvn_Listing таблицы, которые имеют NULL значения из таблицы LEFT JOIN эд tvn_ListingOption. Ну вы можете проверить наличие нулевых значений в tvn_ListingOption таблице как:

SELECT * 
FROM tvn_Listing 
LEFT JOIN tvn_ListingOption ON (tvn_Listing.id = tvn_ListingOption.listings_id 
           AND tvn_ListingOption.options_id = 12) 
WHERE tvn_ListingOption.Id IS NOT NULL 
+1

Почему бы вам не просто использовать внутреннее соединение? –

+0

+1 «внутреннее соединение» улучшает ясность кода, устраняя сложности – Leo

+0

, безусловно, если есть только эти две таблицы, то это путь. Но я сомневаюсь, что могут быть другие таблицы, но здесь здесь показаны только 2 из них. – TheVillageIdiot

0

Обратите внимание, что если вы добавите NOT NULL условие будет влиять на результаты (если options_id обнуляемым)

test=# select * from tvn_Listing; 
id | nm 
----+---- 
    1 | A 
    2 | B 
(2 rows) 

test=# select * from tvn_listingoption ; 
id | op 
----+---- 
    1 | A 
    3 | B 
    | D 
(3 rows) 

test=# select * from tvn_listing left join tvn_listingoption on tvn_listing.id=tvn_listingoption.id; 
id | nm | id | op 
----+----+----+---- 
    1 | A | 1 | A 
    2 | B | | 
(2 rows) 

test=# select * from tvn_listing left join tvn_listingoption on tvn_listing.id=tvn_listingoption.id and tvn_listingoption.id is not null ; 
id | nm | id | op 
----+----+----+---- 
    1 | A | 1 | A 
    2 | B | | 
(2 rows) 

test=# select * from tvn_listing left join tvn_listingoption on tvn_listing.id=tvn_listingoption.id where tvn_listingoption.id is not null ; 
id | nm | id | op 
----+----+----+---- 
    1 | A | 1 | A 
(1 row) 
+0

спасибо, :) я решил свою проблему – lecuong92

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