wyszukiwanie - mysql

0

Witam.
Mam taki problem
mam tabelę, która wygląda tak:
id---klucz---wpis
1----1-------11
2----1-------34
3----1-------105
4----2-------11
5----2-------66
6----3-------5
7----3-------15
8----3-------105
9----4-------55
itd.
(jak widać jest to relacja 1 do wielu)
jak robie takie zapytanie:
select wpis from tabela where klucz=1
to w wyniku otrzymuję: 11, 34, 105 i jet ok, ale jak to zrobić żeby podać więcej warunków dla kolumny klucz, i otrzymać jak najbardziej trafny wynik, tzn.
dla klucza chciałbym podać np wartości: 1 i 2, ale w wyniku otrzymać tylko wartość 11 z kolumny wpis.
zapytanie typu:
select wpis from tabela where klucz=1 and klucz=2 zwróci z oczywistych powodów pusty wynik
a zapytanie typu
select wpis from tabela where klucz=1 or klucz=2 zwróci wynik: 11,34,105,11,66
a ja potrzebuje żeby zwróciło tylko 11

da się jakoś to zrobić w mysql?

Proszę o sugestie
pozdrawiam.

0
SELECT t1.* FROM
(
SELECT * FROM tabela WHERE klucz=1
) t1
JOIN
(
SELECT * FROM tabela WHERE klucz=2
) t2
ON t1.id=t2.id

Coś zamotałem - źle. Ale idea mniej więcej taka...

0

Można też

select wpis from tabela
where klucz=1 or klucz=2
group by wpis
having count(*)=2 -- bo po dwóch kluczach szukamy
1
 select count(1) as Trafnosc, wpis from tabela 
where klucz in (1,2)
group by wpis
order by 1 desc limit 1

i masz najczęściej występujący wpis z pośród rekordów o zadanych kluczach. Zmieniasz "limit 1" na "limit 10" i masz 10 "najtrafniejszych" rekordów posortowanych "od najbardziej trafnego"

1 użytkowników online, w tym zalogowanych: 0, gości: 1