sql/php: Komplizierte Abarbeitung für eine Sitemap :(
Verfasst: 06.12.2012 22:21
Hi
ich hab mal wieder eine komplizierte SQL-Abfrage - bzw. Weiterverarbeitung vor.
Grundlage ist diese Abfrage:
Das Ergebnis sieht dann so aus:
Hat mir eigentlich gereicht. Bis ich erkannt habe, das IDs 1-3x vorhanden sein können.
Sinn ist es aus diesen Angaben eine Sitemap zu basteln
Anzahl/15 (aufgerundet) = Seitenzahl
Mit der Ausgabe oben sehen die links in der Sitemap dann also so aus:
/index.php?ID=2&MID=1
/index.php?ID=2&MID=3
/index.php?ID=2&MID=3&seite=2
/index.php?ID=2&MID=3&seite=3 ....
Offensichtlich richtig. Jetzt kam der eigentlich Fehler zu tage:
Problem ist eine komplizierte Verschachteltung wenn mehre MID vorhanden sind.
Ist zu einer ID nur ein MID vorhanden lautet die URL
/index.php?ID=2 <- das ganze landet in einem Menu namens Übersicht ... hier stehen dann ALLE MID's drin - ab 15 Einträge dann halt mit Pagination.
Sind zu einer ID aber 2 MIDs vorhanden sieht das ganze so aus:
/index.php?ID=2 <- Übersicht -> hier sieht man zu jeder MID die Top 5 Einträge (!)
/index.php?ID=2&MID=1 <- Menu MID 1
/index.php?ID=2&MID=3 <- Menu MID 3
Fehler erkannt?
Nach meinem ersten Ansatz muss ich ID und MID in die Sitemap hauen => Ist aber nur EINE MID vorhanden, hau ich hier für 20 Seiten, 20 Links mit MID=3 rein ... ich schreibe also Links in die Sitemap die zwar funktionieren, aber nicht richtig sind (hab canonicals drin, die dieser Sitemap dann widersprechen würden; ok canonicals sind dafür da den richtigen Content zu markieren - aber ich hätte es doch gerne sauber übermittelt).
Meine IDEE war nun ... ich brauche ein erweitertes Ergebnis:
Damit könnte ich die passenden Links erstellen in dem ich anzahlMID abfrage: ist 1 dann ?ID=2; ist 2 dann ?ID=2, ?ID=2&MID=1, ?ID=2&MID=3
Nur wurde mir schon angedeutet das ich so eine Ausgabe auf Basis meiner Abfrage oben nicht hinbekomme. Wir könnte ich das sonst hin bekommen?
Ich hoffe ihr habt das Problem verstanden?
IDs könnten mehrere HUNDERT sein. MIDs derzeit nur 3.
Die Sitemap wird in der Nacht erstellt - also dann wenn bissel mehr CPU/DB-Power vorhanden ist
. Wenn ich pro 1000 IDs also 500ms für das Script investieren muss, ist das so! Ich brauche also nur eine funktionable Lösung - nicht zwingend eine Highperformance-Lösung
. Mein Hardcoregedanke wäre ja obere Abfrage - dann zur Ausgabe eine While - und da drin eine num_row-DB-Abfrage ... nur bei 1000 IDs sind das dann auch 1000 Abfragen - das ist etwas ZU BRUTAL! Bissel Harmloser darf es sein 
Danke
Grüße
Wuppi
ich hab mal wieder eine komplizierte SQL-Abfrage - bzw. Weiterverarbeitung vor.
Grundlage ist diese Abfrage:
Code: Alles auswählen
SELECT ID, MID, COUNT(ID) AS anzahl, MAX(time) AS neuste FROM dbase1 GROUP BY ID, MID
Code: Alles auswählen
ID MID anzahl neuste
1 3 6 1352730607
2 1 7 1354709044
2 3 336 1352477062
Sinn ist es aus diesen Angaben eine Sitemap zu basteln
Anzahl/15 (aufgerundet) = Seitenzahl
Mit der Ausgabe oben sehen die links in der Sitemap dann also so aus:
/index.php?ID=2&MID=1
/index.php?ID=2&MID=3
/index.php?ID=2&MID=3&seite=2
/index.php?ID=2&MID=3&seite=3 ....
Offensichtlich richtig. Jetzt kam der eigentlich Fehler zu tage:
Problem ist eine komplizierte Verschachteltung wenn mehre MID vorhanden sind.
Ist zu einer ID nur ein MID vorhanden lautet die URL
/index.php?ID=2 <- das ganze landet in einem Menu namens Übersicht ... hier stehen dann ALLE MID's drin - ab 15 Einträge dann halt mit Pagination.
Sind zu einer ID aber 2 MIDs vorhanden sieht das ganze so aus:
/index.php?ID=2 <- Übersicht -> hier sieht man zu jeder MID die Top 5 Einträge (!)
/index.php?ID=2&MID=1 <- Menu MID 1
/index.php?ID=2&MID=3 <- Menu MID 3
Fehler erkannt?
Nach meinem ersten Ansatz muss ich ID und MID in die Sitemap hauen => Ist aber nur EINE MID vorhanden, hau ich hier für 20 Seiten, 20 Links mit MID=3 rein ... ich schreibe also Links in die Sitemap die zwar funktionieren, aber nicht richtig sind (hab canonicals drin, die dieser Sitemap dann widersprechen würden; ok canonicals sind dafür da den richtigen Content zu markieren - aber ich hätte es doch gerne sauber übermittelt).
Meine IDEE war nun ... ich brauche ein erweitertes Ergebnis:
Code: Alles auswählen
ID MID anzahl neuste anzahlMID
1 3 6 1352730607 1
2 1 7 1354709044 2
2 3 336 1352477062 2
Nur wurde mir schon angedeutet das ich so eine Ausgabe auf Basis meiner Abfrage oben nicht hinbekomme. Wir könnte ich das sonst hin bekommen?
Ich hoffe ihr habt das Problem verstanden?

IDs könnten mehrere HUNDERT sein. MIDs derzeit nur 3.
Die Sitemap wird in der Nacht erstellt - also dann wenn bissel mehr CPU/DB-Power vorhanden ist



Danke
Grüße
Wuppi