2017-04-23 4 views
0

Ich entwerfe eine Suchmaschine, die Daten in einer Datenbank durchforstet. Ich habe 2 Tabellen in meiner Datenbank:SQL: Wie mehrere Abfragen zusammenzufassen, die eine innere Verknüpfung verwenden?

Members:= `MemberID|Firstname|Secondname|Member_Type|Skills|Marital Status` 
Schedule:= `ScheduleID|MemberID (foreign key)|six_am|seven_am|...|nine_pm` 

(wobei die Werte für six_am | seven_am | ... | nine_pm Boolesche Werte sind und repräsentieren availablity)

Meine Frage ist, ob es einen Weg gibt, eine zu schaffen einzelne SQL-Abfrage wie:

SELECT * FROM members1 (WHERE $x LIKE $firstname OR $x LIKE SecondName...) INNER JOIN schedules ON (members1.members_id = schedules.member_id) WHERE eleven_am=1 OR twelve_pm=1

auf diese Weise kann ich eine einzelne Abfrage anstelle von mehreren Einsen eingeben.

+0

Verwenden Sie zuerst vorbereitete Anweisungen, um Ihre Variablen an Ihren sql zu binden, wodurch Sie die SQL-Injektion verhindern können. Zweitens, bitte geben Sie weitere Details, das gewünschte Ergebnis ist unklar. Auch eine bessere Möglichkeit, Ihre Abfrage zu erstellen ist SELECT \t * VON \t Mitglieder1 \t Exklusionsverknüpfung Pläne auf members1.members_id = schedules.member_id WHERE \t $ x LIKE $ Vorname oder $ x LIKE SecondName \t UND elf_am = 1 ODER zwölf_pm = 1' – Arbels

Antwort

0

können Sie vorbereitete Anweisungen verwenden:

SET @query = 'build your own query in any way'; 
PREPARE stmt FROM @query; 
SET @id = 4; -- here you can add variable for safe inserting to the query. if you want to 
EXECUTE prepared_query USING @id; 
DEALLOCATE PREPARE stmt; 

Die @query kann durch eine serverseitige Sprache (PHP zum Beispiel) oder durch String-Manipulationen in reiner SQL gebaut werden.
Anschließend senden Sie die "Vorlage" zur Ausführung.
Wenn Sie weitere Details zur Verfügung stellen, kann ich ein genaueres Beispiel erstellen.
Aber das ist eine Idee.

Verwandte Themen