mysql-query
mysql-query
Hallo zusammen,
gleich zu beginn: Ich weiß, dies ist das falsche Forum hierfür, aber leider kenn ich kein anderes, und da ich hier schon oft Hilfe gefunden habe, will ich es mal hier probieren.
Ich hab eine Tabelle mit verschiedenen Inhalten. Ich will jetzt rausfinden, wie oft jeder Inhalt vorkommt, und dann nach dem Vorkommen sortiert ausgeben. Ist das soweit verständlich? Ist es möglich, das mit MySQL hinzubekommen?
Danke für eure Hilfe!
gleich zu beginn: Ich weiß, dies ist das falsche Forum hierfür, aber leider kenn ich kein anderes, und da ich hier schon oft Hilfe gefunden habe, will ich es mal hier probieren.
Ich hab eine Tabelle mit verschiedenen Inhalten. Ich will jetzt rausfinden, wie oft jeder Inhalt vorkommt, und dann nach dem Vorkommen sortiert ausgeben. Ist das soweit verständlich? Ist es möglich, das mit MySQL hinzubekommen?
Danke für eure Hilfe!
Re: mysql-query
Natürlich geht das mit MySQL. Dazu wäre aber Deine Tabellstruktur wie Tabellenname, Spaltennamen, wonach Du suchst und wonach sortiert werden soll hilfreich.
Ohne diese Angaben scheint mir DISTINCT Dein Freund zu sein.
Ohne diese Angaben scheint mir DISTINCT Dein Freund zu sein.
-
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: mysql-query
select obsttyp, count(*) from obstsortiment group by obsttyp order by count(*)
selektiert wie oft jeder obsttyp in der Tabelle obstsortiment vorkommt und sortiert das nach der Anzahl.
Gruss,
Out
selektiert wie oft jeder obsttyp in der Tabelle obstsortiment vorkommt und sortiert das nach der Anzahl.
Gruss,
Out
Re: mysql-query
Super, GROUP BY war das, was mir gefehlt hat. Danke!
Re: mysql-query
arrrgh, das reicht mir noch nicht. ich brauch noch eine zweite Query, die folgendes vollbringt:
Nehmen wir mal folgenden Aufbau an:
Spalte 1: ID, Spalte 2: Inhalt, Spalte 3: Gruppe
Jetzt will ich die Anzahl der Zeilen auslesen, die einen Wert enthalten. Nach diesem Wert muss der Wert 'a' kommen, und beide Werte müssen in der selben Gruppe sein. Ist das verständlich?
d.h. ich erhalte in diesem Beispielt die ID 1 und 3, will also den Wert 2 (also die Anzahl der Treffer) als Ergebnis haben. Warum ich 1 erhalte, ist klar. 3 muss ich erhalten, weil die Zeile mit der ID 3 der Gruppe 1 angehört, und der nächste Wert in dieser Gruppe ist ID 5, und der ist 'a'.
Konnte mir jemand folgen? :)
Nehmen wir mal folgenden Aufbau an:
Code: Select all
1 a 1
2 a 1
3 b 1
4 a 2
5 a 1
6 b 1
7 b 2
Jetzt will ich die Anzahl der Zeilen auslesen, die einen Wert enthalten. Nach diesem Wert muss der Wert 'a' kommen, und beide Werte müssen in der selben Gruppe sein. Ist das verständlich?
d.h. ich erhalte in diesem Beispielt die ID 1 und 3, will also den Wert 2 (also die Anzahl der Treffer) als Ergebnis haben. Warum ich 1 erhalte, ist klar. 3 muss ich erhalten, weil die Zeile mit der ID 3 der Gruppe 1 angehört, und der nächste Wert in dieser Gruppe ist ID 5, und der ist 'a'.
Konnte mir jemand folgen? :)
-
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: mysql-query
Nein, jetzt wirds abstrus...
Mach mal ein ordentlich benamstes Beispiel mit was du hast, und was du haben willst.
Und vor allem keine Zahlenspielchen. Erstell gescheite Testdaten. ;)
Mach mal ein ordentlich benamstes Beispiel mit was du hast, und was du haben willst.
Und vor allem keine Zahlenspielchen. Erstell gescheite Testdaten. ;)
Re: mysql-query
:)
Ein konkretes Beispiel: Ich hab in einer Tabelle ein fortlaufende ID, eine Spalte mit einem Link, und eine User-ID. Die Tabelle wurde gefüllt, als User auf eine Seite rumgesurft sind: die aktuelle URL in die Tabelle, dazu eine User-ID.
Jetzt will ich wissen, welche Seite, nachdem der User auf Seite X war, am häufigsten angesurft wurde.
Besser? :)
Ein konkretes Beispiel: Ich hab in einer Tabelle ein fortlaufende ID, eine Spalte mit einem Link, und eine User-ID. Die Tabelle wurde gefüllt, als User auf eine Seite rumgesurft sind: die aktuelle URL in die Tabelle, dazu eine User-ID.
Jetzt will ich wissen, welche Seite, nachdem der User auf Seite X war, am häufigsten angesurft wurde.
Besser? :)
Re: mysql-query
Hoffe, ich verstehe dich richtig?
Du möchtest die am häufigste, besuchte URL von einem bestimmten User herausfinden?
Als Parameter hast Du die User-ID?
Du möchtest die am häufigste, besuchte URL von einem bestimmten User herausfinden?
Als Parameter hast Du die User-ID?
Re: mysql-query
Nein. Das wär ja kein Problem.
Nehmen wir an, /index.php ist die Startseite. Nun will ich wissen, welche Seiten der User angesurft hat, NACHDEM er auf dieser index.php war.
Das lässt sich ja herausfinden, weil die alle in die Datenbank geschrieben sind.
Nehmen wir an, /index.php ist die Startseite. Nun will ich wissen, welche Seiten der User angesurft hat, NACHDEM er auf dieser index.php war.
Das lässt sich ja herausfinden, weil die alle in die Datenbank geschrieben sind.
-
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: mysql-query
Da musst du entweder das Datenbankdesign ändern oder über mehrere Querries abdeckeln.
Re: mysql-query
Was denn nu?markusk wrote: Nun will ich wissen, welche Seiten der User angesurft hat, ...
Gruß, Phil
Re: mysql-query
Hast du einen Vorschlag, in welcher Weise ich es ändern sollte?
Ich habe es schon hinbekommen, allerdings klappt das dann nur mit einer Query, wenn die ID der seite /index.php genau 1 tiefer ist als die ID der Folgeseite:
Ich habe es schon hinbekommen, allerdings klappt das dann nur mit einer Query, wenn die ID der seite /index.php genau 1 tiefer ist als die ID der Folgeseite:
Code: Select all
SELECT
history1.`path` AS 'path',
COUNT(history1.`path`) AS 'count',
history1.`id`
FROM
`pathtable` AS history1,
`pathtable` AS history2
WHERE
history1.`id` - 1 = history2.`id`
AND
history2.`path` = 'index.php'
AND
history1.`userid` = history2.`userid`
GROUP BY
history1.`path`
ORDER BY
'count' DESC
Last edited by markusk on 2005-04-27 18:46, edited 1 time in total.
Re: mysql-query
Ich will wissen, welche Seite von der index.php aus am häufigsten angesurft wurde. Das is schon ne komplizierte Sache :)Phillux wrote:Was denn nu?
-
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: mysql-query
Ã?ndere einfach dein Datenbankdesign:
zielseite | quellseite anfügen.
Dann kannst du das ganz einfach selektieren.
In der obigen Tabelle kannst du das sonst nicht referenzieren. ;)
zielseite | quellseite anfügen.
Dann kannst du das ganz einfach selektieren.
In der obigen Tabelle kannst du das sonst nicht referenzieren. ;)
Re: mysql-query
Jo, aber woher weiß ich die Zielseite wenn die Quellseite gegeben ist? Referer kann ich nicht benutzen, da die ja oft deaktiviert sind, und alle Links auf allen Seiten mit einem zusätzlichen Paramter zu versehen sprengt auch die Möglichkeiten... Glaub mir, ich hab mir das schon alles durch den Kopf gehen lassen, aber ich komme einfach auf keinen grünen Zweig :(
Re: mysql-query
Aber das ist ja dann nicht ein Problem des Datenbank Designs. Wenn Du den Referer nicht weisst und dem Link keinen Parameter mitgeben kannst/willst dann wüsste ich nicht, wie Du herausfinden kannst, von welcher Seite der User kam.markusk wrote:Jo, aber woher weiß ich die Zielseite wenn die Quellseite gegeben ist? Referer kann ich nicht benutzen, da die ja oft deaktiviert sind, und alle Links auf allen Seiten mit einem zusätzlichen Paramter zu versehen sprengt auch die Möglichkeiten... Glaub mir, ich hab mir das schon alles durch den Kopf gehen lassen, aber ich komme einfach auf keinen grünen Zweig :(
Re: mysql-query
Ja, die einzige Möglichkeit ist, das über die IDs rauszufinden
Durch kann ich aber rausfinden, von wo nach wo der User gewandert ist. Das geht also. Dann muss das andere also auch irgendwie gehen, oder? :)
Durch
Code: Select all
SELECT `path` FROM ... WHERE `userid` = 1 ORDER BY `id` ASC
Re: mysql-query
Meiner Meinung nach, ist das mit dem Deinem aktuellen System dann die einzige Möglichkeit. Es sei denn, du kannst den Referer auslesen, bzw. die vorherige Seite genau identifizieren. Und dann würde ich das Tabellen-Design so ändern, wie OutOfBound vorgeschlagen hat.markusk wrote: Ich habe es schon hinbekommen, allerdings klappt das dann nur mit einer Query, wenn die ID der seite /index.php genau 1 tiefer ist als die ID der Folgeseite:
Code: Select all
SELECT history1.`path` AS 'path', COUNT(history1.`path`) AS 'count', history1.`id` FROM `pathtable` AS history1, `pathtable` AS history2 WHERE history1.`id` - 1 = history2.`id` AND history2.`path` = 'index.php' AND history1.`userid` = history2.`userid` GROUP BY history1.`path` ORDER BY 'count' DESC
Gruß, Phil
Re: mysql-query
Ja, aber der Referer wird nicht von 100% aller Rechner mitgesendet -> Die Statistitk wird verfälscht. Und ich kann auch nicht alle Links ändern, das sprengt wie gesagt die Möglichkeiten.
Gut, dann werde ich es wohl so machen, wie ich geschrieben habe. Der einzige Unterschied: Beim Schreiben der Daten muss ID = ID + 1 gesetzt werden, auto_increment funnktioniert also nicht. Dadurch wird das Schreiben etwas verlangsamt, das wollte ich umgehen. Aber gut, trotzdem Danke für eure Mühe!
Gut, dann werde ich es wohl so machen, wie ich geschrieben habe. Der einzige Unterschied: Beim Schreiben der Daten muss ID = ID + 1 gesetzt werden, auto_increment funnktioniert also nicht. Dadurch wird das Schreiben etwas verlangsamt, das wollte ich umgehen. Aber gut, trotzdem Danke für eure Mühe!
Re: mysql-query
Du könntest vielleicht auch jeweils die aktuelle Seite in einer Session speichern und so im Folgeskript wieder auslesen. Vielleicht eine Möglichkeit das Problem mit dem Referer zu umgehen.
-
- Posts: 470
- Joined: 2002-05-14 13:02
- Location: Karlsruhe City
Re: mysql-query
Mal nebenher: Wie stellst du fest, ob der User nicht den Zurück button verwendet, oder aus den Bookmarks drauf zugreift, oder einen Preloader verwendet?
Weil dann funktioniert dein Ansatz überhaupt nicht, weil du eben keine Referenz von Seite A -> Seite B hast.
Auch eine MySQL kann Daten die nicht existieren nicht aus reiner Luft erzeugen. (Nämlich die fehlende Referenzierung),
Gruss,
Out
Weil dann funktioniert dein Ansatz überhaupt nicht, weil du eben keine Referenz von Seite A -> Seite B hast.
Auch eine MySQL kann Daten die nicht existieren nicht aus reiner Luft erzeugen. (Nämlich die fehlende Referenzierung),
Gruss,
Out
Re: mysql-query
Hint: session + unixtime + pageid
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.