Hallo Frank,
Dazu hab ich folgendes SQL-Statement zusammengebastelt:
irgendwo ist Dir der Beginn der WHERE-Klausel abhanden gekommen.
SELECT
datum\_hin
,uhrzeit\_hin
,datum\_rueck
,uhrzeit\_rueck
,prefix
,name
,gegnermannschaftsID
,wappen
FROMspielpaarungen
,vereine
ANDspielpaarungen
.vereinsID
=vereine
.vereinsID
AND (ort\_hin
='heim' AND DATEDIFF(datum\_hin
,'$date')<=7 AND $date <=datum\_hin
)
OR (ort\_hin
='auswärts' AND DATEDIFF(datum\_rueck
,'$date')<=7 AND $date <=datum\_rueck
)
Selbstverständlich propagiere ich weiterhin die Verwendung der expliziten JOIN-Syntax, siehe Einführung JOINs und außerdem finde ich SQL-Statements besser lesbar, wenn sie nicht mit (hier) überflüssigen Backticks übersät sind - auch wenn ich nachvollziehen kann, dass ein Tool wie phpMyAdmin alles in Backticks packt.
Also:
SELECT
<feldliste>
FROM spielpaarungen sp -- Aliasnamen sparen Schreibarbeit
-- können Statements leserlicher machen
-- sind bei mehrfacher Verwendung der selben
-- Tabelle manchmal sogar erforderlich
INNER JOIN vereine v -- explizite JOIN-Syntax
ON sp.vereinsID = v.vereinsID -- diverse SQL-Dialekte, auch MySQL-SQL
-- erlauben auch [link:http://dev.mysql.com/doc/refman/5.0/en/join.html@title=USING (vereinsID)]
WHERE <bedingungen> -- Statt Deiner DATE_DIFF-Akrobatik
-- könntest Du viel intuitiver mit
-- [link:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#id3108447@title=BETWEEN] und [link:http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#id2868724@title=DATE_ADD()] arbeiten.
Code irgendeiner Programmiersprache ist bei SQL-Fragen ebenfalls nicht hilfreich, das resultierende Statement wird benötigt. Poste daher bitte die Zeichenkette, die an MySQL zur Ausführung übergeben wird, und zwar vollständig. Sonst wird man Dir kaum helfen können.
Freundliche Grüße
Vinzenz