Würde hier ein Kreuzprodukt etwas bringen?

Kalma

Erfahrenes Mitglied
Hey,

letzens kam mein Papa mir zu Hilfe um mir Abfragen zu erleichern. Dies nannte er "Kreuzprodukt". Nun fragte er mich letzens: "Na, schon fleißig Kreuzprodukte geschrieben?" Darauf hin antwortete ich: "Weiß nicht, ob das bei meinen Abfragen was bringt"

Darum frage ich euch, obs was bringen würde, bei meinen Abfragen hier zum Thema "Auftritt auslesen" sogenannte Kreuzprodukte durchzuführen:

PHP:
<?php
	//id getten
	$id				= $_GET['id'];

	//gig auslesen
	$gig			= mysql_query("SELECT * FROM gigs WHERE `id`=$id");
	$g				= mysql_fetch_array($gig);
	
	//bands auslesen
	$Bands 		= mysql_query("SELECT * FROM bandlist WHERE `gid`=$id ORDER BY aid DESC");
	
	//location auslesen
	$Loc	 		= mysql_query("SELECT * FROM locations WHERE `id`=".$b['lid']."");
	$l				= mysql_fetch_array($Loc);
	
	//veranstalter auslesen
	$Ver			= mysql_query("SELECT * FROM veranstalter WHERE `id`=".$b['vid']."");
	$v				= mysql_fetch_array($Ver);
?>

Zur Info, Kreuzprodukt:
PHP:
SELECT bl.*, g.* FROM bandlist AS bl INNER JOIN gigs AS g ON bl.aid=g.aid WHERE g.aid='$aid' AND bl.gid='$aid' AND bl.aid='$aid'


MfG
Df
 
Hi

Erstmal lässt sich nicht viel dazu sagen, da hier keiner deine DB Struktur kennt und auch keiner weiß was du vor hast.
Mir stellt sich nur die Frage, was Kreuzprodukte überhaupt bringen sollen außer einen OverHead an Ergebnissen.
Du bekommst bei einem Kreuzprodukt das x^2-fache deiner eigentlichen Ergebnismenge. Ich kann mir nicht vorstellen, dass das gewünscht sein soll.
 
Hey,

danke für deine Antwort...

So, stimmt, keiner weiß, wie meine tabellen aussehen, und was ich vorhab.
Werd mal versuchen, es zu erklären.
Also, ich habe eine Seite, bei der Termine angezeigt werden, und eine, auf der Info's zum Termin ausgegeben werden, eine davon wäre diese:
http://dfmusik.de/?section=giglesen&id=2
Bis jetzt jedoch keine vernünftigen Infos ;)

So. hier habe ich dann halt die Abfragen von oben.
Somit stellt sich die Frage: Wäre es nicht sinnvoller/einfacher alle Abfragen in eins zu haben?

David
 
Mysql ist sehr viel schneller als php, wobei das nicht zu vergleichen ist, demnach kann man sich doch eigentlich denken, dass es besser ist nur einmal bzw. weniger "mysql_query(Statement)" zu verarbeiten als mehrmals ? Somit sollte sich deine Frage beantworten.
 
Erstmal weiß ich immer noch nicht, wie deine Datenbank aussieht und ich weiß auch immer noch nicht, was du anschließend mit dem Result machen willst.

Fest steht aber weiterhin:
Kreuzprodukte sind zu vermeiden, da du damit nie das bekommst, was du willst
Beispiel
Tabelle a hat 3 Datensätze, Tabelle B hat 3 Datensätze.
Du willst 3 Datensätze mit dem Inhalt aus beiden Tabellen. Das Kruezprodukt sind aber neun Datensätze. Also nicht das was du willst. Demnach ist sowas zu vermeiden.
Ich versteh immer noch nicht, wieso man sowas extra haben will. Ich kann mir einfach keine UseCase vorstellen!

@Online-Skater
Du widersprichst dir selbst!
Wieso soll er nicht mehrere Queries ausführen, wenn das DBMS schneller ist. Abgesehen davon, dass man ein DBMS nicht mit einer Scriptsprache vergleichen kann.
 
Zuletzt bearbeitet:
Zurück