2013-02-13 18 views
6

Wykonuję wyszukiwanie za pomocą JDBC.Jak wyszukiwać wartości z wielu tabel przy użyciu symboli wieloznacznych?

Kod działa poprawnie, gdy używam pojedynczej tabeli.

Kiedy próbuję połączyć wiele tabel przy użyciu wyszukiwania z użyciem dzikich kart, kod nie działa.

Na przykład użytkownik może wyszukiwać dowolne słowo kluczowe.

  1. jeśli użytkownik wyszukuje „krykieta”, słowo kluczowe krykiet jest availble w tabeli sportowej
  2. jeśli użytkownik wyszukuje „Windows 8”, jest on dostępny w tabeli oprogramowania
  3. jeśli użytkownik wyszukuje dla „google, yahoo”, słowa kluczowe są dostępne w tabeli na stronie

Oto dynamiczny wartość wejściowa:

where s1(cricket,windows 8,google) 

W poszukiwaniu pojedynczej tabeli szukam „krykieta” w tabeli sportowej.

Tu jest mój kwerendy, która działa prawidłowo:

"select * from sports WHERE feed LIKE '%" +s1 + "%'"; 

Moje wielokrotne zapytania tabela nie działa.

"select * from product WHERE sitename LIKE '%"+s1+"%'" "OR 

    "select * from sports  WHERE sitename LIKE '%"+s1+"%'" " OR 

    "select * from website WHERE sitename LIKE '%"+s1+"%'" " OR 

    "select * from software WHERE sitename LIKE '%"+s1+"%'" "OR 

    "select * from other WHERE sitename LIKE '%"+s1+"%'" 

Co jest nie tak z tym kodem?

+0

W swoim pojedynczym zapytaniu mówisz, gdzie feed like iw twoim multitable, gdzie sitename like? – Lyrion

Odpowiedz

2

Spróbuj połączyć pojedyncze instrukcje z UNION zamiast z OR. Dzięki temu można połączyć kilka zapytań SQL i tabel z tymi samymi kolumnami. Na przykład:

"select * from product WHERE sitename LIKE '%"+s1+"%' UNION 

select * from sports WHERE sitename LIKE '%"+s1+"%' UNION 

select * from website WHERE sitename LIKE '%"+s1+"%' UNION 

select * from software WHERE sitename LIKE '%"+s1+"%' UNION 

select * from other WHERE sitename LIKE '%"+s1+"%'" ; 

Ale bądź świadomy! Twoje pojedyncze tabele muszą mieć te same kolumny/kolumny kolumn, w przeciwnym razie nie będzie działać!
Może lepszym przykładem dla wyjaśnienia:

"select sitename, description from product WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, description from sports WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, description from website WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, description from software WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, text as description from other WHERE sitename LIKE '%"+s1+"%'" ; 

Jak widać w oświadczeniu 6, można odwołać się do innych kolumn o ich wyniku zmiany nazwy, ale columnCount musi być taka sama.

Mam nadzieję, że to może ci pomóc!

Powiązane problemy