Yuuri
Fleet Admiral
- Registriert
- Okt. 2010
- Beiträge
- 13.928
Hallo zusammen,
ich stell mich grad irgendwie ein bisschen deppert an. Geht um ne Produktlistung mit mehreren Seiten. In der Suche soll dabei natürlich auf die richtige Seite gesprungen werden. Dazu würd ich einfach gern die Produkte einer Kategorie raussuchen, diese ordentlich sortieren, mit ner Nummerierung versehen und im Query darüber einfach ne Where-Klausel hinzufügen, um das richtige Produkt zu bekommen. Die Nummerierung verrät mir dann die Stelle in der Liste und somit weiß ich auf welcher Seite das Produkt gezeigt wird. Ganz einfach in der Theorie, nur in der Praxis haperts.
Der Query um den es geht:
Das verfrachte ich jetzt in einen Subquery und nummerier das Ganze durch:
Erhalte nun zwar nummerierte Ergebnisse, aber die Sortierung vom Subquery ist hinüber, ergo die Nummerierung fürn Allerwertesten (bzw. ist nun nach products_id sortiert).
Grund? Lösung?
Nur den ersten Query absetzen, in ner Schleife durchlaufen, Produkt vergleichen + Key setzen, ... Mag ich nicht wirklich und wirkt sehr unelegant.
LG
ich stell mich grad irgendwie ein bisschen deppert an. Geht um ne Produktlistung mit mehreren Seiten. In der Suche soll dabei natürlich auf die richtige Seite gesprungen werden. Dazu würd ich einfach gern die Produkte einer Kategorie raussuchen, diese ordentlich sortieren, mit ner Nummerierung versehen und im Query darüber einfach ne Where-Klausel hinzufügen, um das richtige Produkt zu bekommen. Die Nummerierung verrät mir dann die Stelle in der Liste und somit weiß ich auf welcher Seite das Produkt gezeigt wird. Ganz einfach in der Theorie, nur in der Praxis haperts.
Der Query um den es geht:
Code:
SELECT
`p`.`products_model`,
`p`.`products_id`,
`p`.`products_sort`
FROM
`products_to_categories` `ptc`
JOIN `products` `p` ON `ptc`.`products_id` = `p`.`products_id`
JOIN `products_description` `pd` ON `p`.`products_id` = `pd`.`products_id`
WHERE
`ptc`.`categories_id` = '10138'
AND `pd`.`language_id` = '2'
ORDER BY
`p`.`products_sort` ASC
Code:
products_model products_id products_sort
AAA00133 39110 10
AAA00531 36244 15
AAA00305 36518 100
AAA00355 36495 120
AAA00304 36509 140
AAA00565 46843 150
AAA00390 36553 160
AAA00094 40687 180
AAA00532 36221 185
AAA00301 36515 200
AAA00300 36514 220
AAA00126 36238 240
...
Das verfrachte ich jetzt in einen Subquery und nummerier das Ganze durch:
Code:
SELECT
*,
(@row := @row + 1) `row`
FROM
(
SELECT
`p`.`products_model`,
`p`.`products_id`,
`p`.`products_sort`
FROM
`products_to_categories` `ptc`
JOIN `products` `p` ON `ptc`.`products_id` = `p`.`products_id`
JOIN `products_description` `pd` ON `p`.`products_id` = `pd`.`products_id`
WHERE
`ptc`.`categories_id` = '10138'
AND `pd`.`language_id` = '2'
ORDER BY
`p`.`products_sort` ASC
) t1
JOIN (SELECT @row := 0) trow;
Code:
products_model products_id products_sort @row := 0 row
AAA00011 36171 1220 0 1
AAA00400 36177 820 0 2
AAA00029 36179 680 0 3
AAA00030 36180 1000 0 4
AAA00033 36185 760 0 5
AAA00536 36186 810 0 6
AAA00045 36195 1604 0 7
AAA00046 36196 920 0 8
AAA00050 36199 1180 0 9
AAA00051 36200 1300 0 10
AAA00049 36201 1260 0 11
AAA00052 36202 1200 0 12
...
Grund? Lösung?
Nur den ersten Query absetzen, in ner Schleife durchlaufen, Produkt vergleichen + Key setzen, ... Mag ich nicht wirklich und wirkt sehr unelegant.
LG