ich wollte eine MySql-Abfrage lokal ausführen und bekomme eine Fehlermeldung.
führe ich die abfrage aber im phpadmin-beplaced aus, erhalte ich keinen fehler.
mein mysql lokal ist MySQL - 5.0.21 Protokoll-Version: 10
vielleicht liegt der fehler ja an meiner lokalen mysql-version?
zu meinem subquery:
(SELECT name FROM table2 WHERE id=a AND anzeige=1 ORDER BY hits LIMIT 0,1) AS XY
damit geht es. setze ich das limit allerdings auf 1,1, dann bekomme ich die fehlermeldung, dass mehrere rows ausgeliefert werden.
Führe ich das subquery alleine aus mit limit 1,1, erhalte ich aber nur ein row. habe das subquery auch schon mit ANY ausprobiert - gleicher fehler.
kann mir jemand helfen?
Ist in dem Fall keine eindeutige Zuweisung über eine primäre Spalte möglich? Das ist in 99% aller Fälle besser geeignet, als so halbgenaue zuweisungen.
[quote=“spielbande”]es gibt tabelle 1 und tabelle 2.
tabelle 1 sind die kategorien und in tabelle 2 die items.
ich möchte tabelle 1 auflisten und dazu jeweils die besten 3 items[/quote]
Auch wenn diese Beschreibung des Datenmodells immer noch ziemlich dürftig ist (bitte etwas genauer beschreiben, welche Abhängigkeiten bestehen), behaupte ich mal, dass du deine Subquery „in die falsche Richtung” machst.
[quote]zu meinem subquery:
(SELECT name FROM table2 WHERE id=a AND anzeige=1 ORDER BY hits LIMIT 0,1) AS XY[/quote]
Wenn das die Subquery ist (in der wohl offenbar nur der Wert der Spalte id von der „äusseren” Query abhängig ist), dann verstehe ich nicht, wie du mit dieser Query auf eine Anzahl von 3 Items kommen willst.
ich wollte die subs ja für die 3 jeweils mit 0,1 - 1,1 ind 2,1 machen.
hier mal mein kompletter query:
$query = ‘SELECT , id as a, (SELECT count() from #__joomlaflashgames where catid=a and published=1) as numlinks (SELECT id from #__joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1id, (SELECT gamefile from #__joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1file, (SELECT imagefile from #__joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1image, (SELECT title from #__joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1title’ FROM #__joomlaflashgames_categories WHERE published = 1 ORDER BY title ASC’;
Schau ich mir vielleicht dann mal an, wenn du es ordentlich formatierst. (Also erst mal keinen PHP-Code zeigen, sondern SQL - und das dann auch übersichtlich eingerückt und umgebrochen.)
Und die genauere Beschreibung des Datenmodells, die steht auch noch aus.
Schau ich mir vielleicht dann mal an, wenn du es ordentlich formatierst. (Also erst mal keinen PHP-Code zeigen, sondern SQL - und das dann auch übersichtlich eingerückt und umgebrochen.)
Und die genauere Beschreibung des Datenmodells, die steht auch noch aus.
[quote]
SELECT , id as a, (SELECT count() from a_joomlaflashgames where catid=a and published=1) as numlinks
(SELECT id from a_joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1id,
(SELECT gamefile from a_joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1file,
(SELECT imagefile from a_joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1image,
(SELECT title from a_joomlaflashgames where catid=a and published=1 order by hits limit 0,1) as spiel1title’
FROM a_joomlaflashgames_categories WHERE published = 1 ORDER BY title ASC’/[/quote]
also mit 0,1 funzt alles wunderbar. will ich aber 1,1 machen kollabiert es
PS: ich hoffe es ist euer ehren entsprechend formatiert, umgebrochen und eingerückt. ent-php’t habe ich es so gut ich konnte
[quote=„spielbande“]und wenn ich das dennoch in einem query mit subs machen möchte?
es muss doch irgendwie gehen - wozu gibt es sonst die subs, wenn man deiner meinung nach alles in eigenen queries realisieren sollte?[/quote]
Wenn du 2 eigene Queries hast, sind es im Endeffekt 2 Queries
Wenn du das mit den ganzen Subqueries machst, ist es 1 Query + 3 Subs = 4 Queries…
Dann kannst du mal raten, was schneller geht
Subqueries haben nur in Ausnahmesituationen einen Sinn, und sicher nicht damit man 3 Zeilen nacheinander per Subquery lädt.
Allgemein sind sowiso JOINs vorzuziehen wo es geht.