2012-05-11 3 views
1

Я пытаюсь получить записи между таблицей, основанной на условии с использованием mysql. Это мой стол. имя таблицы: trans_table и имеет два поля.Как получить требуемые записи в таблице?

item transaction 
----- ----------- 
item1 b 
item2 b 
item3 b 
item3 c 
item4 d 
item5 b 

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

item transaction 
----- ----------- 
item1 b 
item2 b 
item5 b 

(becoz элемент3, имеющая сделку с наряду с Ь и пунктом 4 и item4 оленьей коже содержит транзакции б)

Я пытался со следующими запросами

1.`select * from trans_tbl where transaction = 'b'` 

2.`select item,qty from trans_tbl where item in(select item from trans_table group by item having count(item)=1);` 

с вышеупомянутые два запроса я не могу получить свой необходимый результат. Так это любой другой способ получить это?

+0

Что происходит, когда вы запускаете запрос? Вы ничего не получаете? Все записи? Сообщение об ошибке? Вы выполняете свой запрос через PHP или напрямую против базы данных? – andrewsi

+0

Ваш первый запрос должен работать. Каково определение таблицы? В частности, каков тип транзакции? –

+0

@GordonLinoff это не сработает, потому что он вообще не хочет item3, и его первый запрос вернет item3. – taylonr

ответ

0

Попробуйте что-нибудь подобное. Он группирует все элементы вместе и возвращать только элементы, которые 1. Иметь одну транзакцию и 2. Эта сделка «б»

select item, transaction 
from trans_tbl 
where transaction = 'b' 
group by item, transaction 
having count(item) = 1 
0

другое решение:

select distinct t1.item, t1.transaction 
from trans_tbl t1 
left join trans_tbl t2 on t1.name=t2.name and t1.transaction<>t2.transaction 
where t2.name is null 

левый присоединиться и проверить правую часть для null будет делать трюк.

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