2016-06-01 8 views
1

Ich habe zwei Tabellen.Durchsuchen eines Wörterbuchs in einer Tabelle in sql

1. ist SatzTitel Spalte mit Werten.

my name is A. 
B is my name. 
I am C kind. 
I am nice. 

2. ist Name mit val Spalte mit Werten.

B. 
C. 
A. 
D. 
H. 

Ich möchte eine Abfrage schreiben, die diese Titel, die enthält jede val von Name Tabelle zurück. Auch ich möchte diejenigen val, die in TitelSatz Tabelle vorhanden sind. Wie kann ich dies erreichen mit Select-Anweisung.

Antwort

1

Sie können die Tabellen mit einem Operator LIKE verbinden.

Um alle Titel zu erhalten, die jede val in ihnen haben:

SELECT DISTINCT(s.title) AS title 
FROM sentence AS s 
JOIN name AS n ON s.title LIKE CONCAT('%', n.val, '%'); 

alle vals zu erhalten, die in einer der Titel sind:

SELECT DISTINCT(n.val) AS val 
FROM sentence AS s 
JOIN name AS n ON s.title LIKE CONCAT('%', n.val, '%'); 
+0

alternativ 'kommen ... auf locate (n.val, s.title) <> 0) ' –

+0

Ich möchte keine Join zwischen beiden Tabellen, sondern separate Ergebnisse für den weiteren Betrieb. d.h. ich möchte nur diejenigen Titel, die irgendein val in einer Auswahlanweisung enthalten, und jene Werte, die im Titel in einer anderen Auswahlanweisung vorhanden sind. – vatsal

+0

locate() kann nur für Strings verwendet werden? – vatsal

Verwandte Themen