Komplexer SQL Query

eXcuvator

Aktives Mitglied
Thread Starter
Dabei seit
31.05.2007
Beiträge
201
Reaktionspunkte
2
Ladies and gentlemen, ich suche nach einer eleganteren Version:

es handelt sich um Werte eines Formularscripts, deswegen sind die ganzen Werte so kryptisch: sid ist die id des Eintrags, nid die id des Formulars, cid die des inputnamens ... there we go:


nid - sid - cid - no - data

Beispielseinträge zu _einem_ Eintrag
506 - 2 - 123123 - 0 - Joachim
506 - 2 - 123124 - 0 - 2
506 - 2 - 123124 - 1 - 10
506 - 2 - 123124 - 2 - 1990
506 - 2 - 123125 - 0 - whatever
(123124 speichert in 3 teilen ein datum)

Und nun will ich alle datensätze, bei denen das Jahr $jahr entspricht und die kombination aus y-m-d einer kalenderwoche $kw entspricht - zZ noch über 2 querys, wobei der erste die sid sich holt, und der zweite dann alle felder die zu der sid gehören

PHP:
	$query1 = "SELECT `sid` FROM {webform_submitted_data} as main
				INNER JOIN {webform_submitted_data} as year
					ON main.sid = year.sid
				INNER JOIN {webform_submitted_data} as d
					ON main.sid = d.sid
				INNER JOIN {webform_submitted_data} as m
					ON main.sid = d.sid
				WHERE `cid` = '".$components['Datum von']."'
					AND year.`no` = '2'
					AND year.cid = '".$components['Datum von']."'
					AND year.data = '".$year."'
					AND d.`no` = '0'
					AND d.`cid` = '".$components['Datum von']."'
					AND m.`no` = '1'
					AND m.`cid` = '".$components['Datum von']."'
					AND WEEK(year.`data`-m.`data`-d.`data`, 1) = '".$week."'");

wie man unschwer erkennen kann, ist das ganze zZ ziemlicher murks und sehr unperformant - geht das irgendwie besser? Wobei ich das ganze noch nicht mal testen konnte - geht überhaupt ein JOIN, wenn das ON-Statement nicht eindeutig ist? (Haben ja zig einträge dieselbe sid)

// edit: kurzes update: es geht nicht (sid ist mehrfach belegt)
 
Zuletzt bearbeitet:
Vielleicht kannst du dir ja selbst helfen, wenn du mal schaust wie hier das Problem angegangen wird.
 
Hallo,

du musst vor die sid noch deine Tabelle setzen.

z.B.: SELECT main.sid FROM Tabelle1 main

Dann sollte es klappen
 
Zurück
Oben Unten