SQL Statement

liquidbeats

Erfahrenes Mitglied
Nabend kurze Frage

ich wollte mal wissen ob ein Statement in dieser Form irgendwie möglich ist.

SELECT COUNT(id) AS id_count, * FROM ......

sinn dessen ist es die Anzahl der IDS zum Sortieren zu nutzenn.


Vielen Dank schonmal
Grüße
 
Eigentlich voll Dumm was ich da geschirben habe.

GROUB BY ...

:rolleyes:

War ich wohl wieder in der Falschen Bahn unterwegs :suspekt:


Grüße
 
"Anzahl der IDs zum Sortieren"

Irgendwie ist das unverständlich?

Könntest du mal das ganze Query zeigen? Bzw. anhand der Tabellenstruktur erklären was du vorhast?

Denn count gibt ja einen absoluten Wert zurück, sprich da kommt z. B. 42 raus und daran kannst du ja nicht wirklich sortieren oO
 
Hier ersteinmal die Struktur.

id => Unique ID
referer
=> Komplette Referer
date => Datum (Timestamp)
orders_id => Bestellnummer (Ist nicht immer Leer, soll aber gezält werden)
order_date => Bestelldatum (timestamp)
host_name => Hostname aus Referer (Dient der Gruppieren)


SELECT * FROM referer_statistik WHERE host_name NOT LIKE '%google.de%' GROUP BY host_name ASC LIMIT 25

Dort sollte jetzt ganz simpel noch ein COUNT(orders_id) rein, um anhand des daraus Resultierendes wertes eine Sortierung gestalten zu können.


Es existiert noch eine weitere Tabelle

id => unique ID
host_name => Hostname (Kommt vom Referer, ist gleich wie in der zuvor genannten Tabelle)
referers => Anzahl an Referers zu diesem Host
orders => Anzahl an Bestellungen

Wenn ich in einen LEFT JOIN ebenfalls einen COUNT einbinden könnte, und vorallem wüsste wie, dann denke ich wär mein Problem gelöst.
Man kann eigentlich sagen dass die zweite Tabelle eine Zusammenfassung der ersteren ist. An sich habe ich mit dieser auch gearbeitet. Jetzt soll jedoch ein Zeitbegremnzer dazu kommen, das bedeutet bspw. die Werte der vergangenen 24 Stunden o.ä.
Und genau da wird es etwas Komplizierter, denn diese Tabelle besitzt in keinster form die möglichkeit eine Abfrage Zeitabhängig zu gestalten, jedoch wüsste ich nicht wie.

Grüße
 
Zuletzt bearbeitet:
SQL:
SELECT count(table1.orders_id) AS id_count, table1.*, count(table2.id) 
FROM table1
LEFT JOIN table2 ON table1.referer = table2.host_name
WHERE host_name NOT LIKE '%google.de%' 
GROUP BY host_name ASC 
LIMIT 25
So sollte es funktionieren, glaube ich.

Ggf. muss jetzt noch eine weitere Bedingung für Tabelle2 gemacht werden?
 
Hallo Felix

Danke dir ersteinmal, an sich Funktioniert es, jedoch sind die werte noch immer Willkürlich und unsortiert. Die werte müssten dann nach id_count Sortiert werden (DESC).

Bei dem Versuch kloppt er mit entweder was vonwegen Illegal oder SQL Error raus. :rolleyes:


Grüße
 
Wie willst du nach einem Count Wert sortieren?

Ein Count wert ist fix! Er zählt alle Einträge die auf dein Query zutreffen und dann ist es eine fixe Zahl. Und nach einer fixen Zahl kann man nicht sortieren.
 
Ne na jetzt hab ich es. ORDER BY table1.orders

orders ist ja die zusammenfassung, sprich der wert den COUNT ebenfalls erzeugen würde.

Ich Danke dir für deine Hilfe.

Grüße
 
Zurück