2013-02-13 12 views
6

Ich mache Wildcard-Suche mit JDBC.Wie sucht man Werte aus mehreren Tabellen mit Wildcards?

Der Code funktioniert einwandfrei, wenn ich eine einzelne Tabelle verwende.

Wenn ich versuche, mehrere Tabellen mithilfe einer Platzhaltersuche zu kombinieren, funktioniert der Code nicht.

Zum Beispiel kann der Benutzer ein beliebiges Schlüsselwort suchen.

  1. , wenn die Nutzer nach "Cricket", das Cricket-Schlüsselwort in der Sport Tabelle availble ist
  2. wenn der Nutzer nach "windows 8", ist es in der Software-Tabelle
  3. verfügbar
  4. , wenn der Benutzer für „google, yahoo“ sucht, sind die Schlüsselwörter in der Website Tabelle

hier ist der dynamische Werteingang:

where s1(cricket,windows 8,google) 

In der einzigen Tabelle Suche ich für "Cricket" Blick in die Sport Tabelle.

Hier ist meine Frage, was gut funktioniert:

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

Meine mehrere Tabellenabfrage funktioniert nicht.

"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+"%'" 

Was ist falsch an diesem Code?

+0

In Ihrer einzigen Abfrage sagen Sie, wo feed like und in Ihrem multitable wo sitename wie? – Lyrion

Antwort

2

Versuchen Sie, Ihre einzelnen Anweisungen mit einer UNION anstatt einer OR zu verbinden. Damit können Sie mehrere SQL-Abfragen und Tabellen mit denselben Spalten versehen. Zum Beispiel:

"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+"%'" ; 

Aber Achtung! Ihre einzelnen Tabellen müssen die gleichen Spalten/Spalten haben, sonst wird es nicht funktionieren!
Vielleicht besseres Beispiel verdeutlichen:

"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+"%'" ; 

Wie Sie 6 in Statement sehen können, können Sie sie andere Spalten Ihr Ergebnis durch Umbenennung beziehen, aber die Spaltenanzahl die gleiche sein muss.

Hoffe, das kann Ihnen helfen!

Verwandte Themen