3 Stimmen

MySQL: Benötigt eine Zählung der Zeilen

Ich versuche, eine SQL-Abfrage durchzuführen, die als Ergebnis auch eine Reihe von qualifizierten Zeilen aus einer anderen Tabelle ausspuckt.

Hier ist die aktuelle Abfrage, wie sie in sprintf eingefügt wurde:

SELECT a.* FROM websites AS a WHERE website_id = %d

Dann habe ich eine Abfrage zum Abrufen der Anzahl der eindeutigen Besuche (aus einer Tabelle der Besuche) für eine bestimmte Website:

SELECT * FROM website_visits WHERE website_id = %d GROUP BY visitor_id

Gibt es nun eine Möglichkeit, diese Abfrage in die erste Abfrage einzufügen, so dass ich die Anzahl der eindeutigen Besuche als Teil des Ergebnisses der ersten Abfrage abrufen kann? Es müsste in etwa so aussehen:

SELECT a.*, (SELECT * FROM website_visits AS b WHERE b. website_id = a. website_id GRUPPE BY visitor_id ) AS unique_visits FROM websites AS a WHERE website_id = %d

Aber ... was die Ausführung betrifft, bin ich ratlos. Jede Hilfe, die Sie anbieten können, wird geschätzt!

1voto

Andomar Punkte 224164

Um die Zeilenzahl abzurufen, fügen Sie SQL_CALC_FOUND_ROWS zur Abfrage, wie:

SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name;

Nach dieser Abfrage können Sie:

SELECT FOUND_ROWS();

So rufen Sie die Zeilenzahl ab.

(Dies ruft die Zählung auf billige Weise ab; wenn Sie die Zählung als Teil des Rowsets benötigen, müssen Sie mit einer Unterabfrage arbeiten, wie in Ihrer Frage).

1voto

RichardTheKiwi Punkte 102469

So erhalten Sie alle Datensätze Ihrer Website und für jeden Datensatz die Anzahl der eindeutigen visitor_id s für diesen Standort gibt.

SELECT a.*, (
    SELECT COUNT(DISTINCT b.visitor_id)
    FROM website_visits AS b
    WHERE b.website_id = a.website_id) AS unique_visits
FROM websites AS a
WHERE website_id = %d

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X