Subselects - Datensätze mehr als x

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Subselects - Datensätze mehr als x

    Hallo,

    vorhanden ist eine Tabelle.
    PHP-Code:
    CREATE TABLE prefix_visit (
      
    visit_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      
    user_id INTEGER UNSIGNED NULL,
      
    visit_user_id INTEGER UNSIGNED NOT NULL,
      
    datum DATETIME NULL,
      
    PRIMARY KEY(visit_id),
      
    INDEX prefix_visit_FKIndex1(user_id),
      
    INDEX prefix_visit_FKIndex2(prefix_user_id)
    ); 
    Diese logt nur Profilaufrufe mit.

    Ich möchte jetzt aber alle Datensätze löschen, die älter sind als jeweils der 10 Eintrag.
    Ok, soweit kein Problem. Habe das zu Testzwecken mal als Select Abfrage gemacht.
    PHP-Code:
    SELECT *
    FROM
        prefix_visit
    WHERE
        user_id 
    1
    AND
        
    datum <=
        (
            
    SELECT
                datum
            FROM prefix_visit
            WHERE
                user_id 
    1
            ORDER BY datum DESC
            LIMIT 10
    1
        

    Das wäre jetzt für den User mit der ID 1
    Nun möchte ich das aber für alle User machen.

    Muß ich da alle User in einer while Schleife durchlaufen und in dieser Schleife diese Abfrage einsetzten oder geht das noch eleganter mit einer SQL Abfrage?
    Gut geraten ist halb gewußt.

  • #2
    Re: Subselects - Datensätze mehr als x

    Code:
    SELECT *
    FROM
    	prefix_visit a
    WHERE
    	datum <=
    	(
    		SELECT
    			datum
    		FROM prefix_visit
    		WHERE
    			user_id = a.user_id
    		ORDER BY datum DESC
    		LIMIT 10, 1
    	)
    ggf. noch ein weiteres Alias im Subquery, je nachdem wie geschickt MySQL sich anstellt.
    "Gut" wäre aber was anderes... was besseres fällt mir aber gerade nicht ein.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar

    Lädt...
    X