Ergebnis 1 bis 7 von 7

Thema: SQL Select Problem...

  1. #1
    Fortgeschrittene/r
    Registriert seit
    26.09.2005
    Ort
    Nürnberg
    Beiträge
    169
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard SQL Select Problem...

    Hallo,

    ich weiß auch nicht, aber ich steh gerade völlig auf der Leitung.

    Ich will aus einer Datenbank mit "userid" und "time" Feldern alle userids abfragen, welche länger als eine bestimmte Zeit nicht mehr eingefügt wurden.
    Ähm, schwer zu verstehen, also die alle userids, wo der letzte "time" Einträg älter als eine bestimmte Zeit ist.

    Als Beispiel:

    Code:
    SELECT userid
    FROM test
    WHERE time "ist älter als" 1194982673
    GROUP BY userid
    Ich weiß, ich stell mich grad sau dumm an, wäre aber über Hilfe froh

    Danke schonmal im voraus!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Kaiserliche Hoheit Avatar von vbtricks
    Registriert seit
    26.12.2005
    Beiträge
    1.586
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Salut,

    meinst du einen Vergleich? Ich nehme an, du arbeitest mit Unix-Timestamps
    Code:
    SELECT userid
    FROM test
    WHERE time < 1194982673
    GROUP BY userid
    Stefan
    Farben richtig wählen: ColorBlender
    Website validieren: W3C Markup Validation Service
    Meine Website: vbtricks
    Kleines Snake zwischendurch?

  3. #3
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    26.09.2005
    Ort
    Nürnberg
    Beiträge
    169
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ja, ich arbeite mit Unix Timestamps.

    Dein Select wird mir jetzt alle userids zurückgeben, wo time älter als dieser timestamp ist. ABER ich möchte nur die userids, wo es gleichzeitig keine neueren gibt.

    Im Pseudocode ungefähr so:

    Code:
    WHERE time < 1194982673 AND NOT time > 1194982673
    Ich weiß nicht ob das jetzt verständlicher rüber kam...

  4. #4
    Kaiserliche Hoheit Avatar von vbtricks
    Registriert seit
    26.12.2005
    Beiträge
    1.586
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Salut,

    also ist userid nicht eindeutig? D.h. es kann mehrere Einträge in der Tabelle mit der gleichen userid geben?


    Stefan
    Farben richtig wählen: ColorBlender
    Website validieren: W3C Markup Validation Service
    Meine Website: vbtricks
    Kleines Snake zwischendurch?

  5. #5
    König(in) Avatar von d4f
    Registriert seit
    22.04.2007
    Ort
    Luxemburg
    Beiträge
    1.493
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Da musst du noch die Userids der beiden miteinander vergleichen, wie das geht kann ich dir leider nicht sagen

    Ich würde es spontan in 2 Abrufen machen:
    1) Alle UserIds nach Zeitkriterium
    2)verbleibende auf Aktuellere prüfen
    Wir sind alle ein BOFH:

  6. #6
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    26.09.2005
    Ort
    Nürnberg
    Beiträge
    169
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ja, es gibt mehrere userids, es ist hier kein Primärschlüssel, sondern nur ein Index (und außerdem gibt es noch mehr Felder, sind hier aber unwichtig).

    @d4f:
    Hm, das hab ich jetzt nicht so ganz verstanden.
    Nach 1) hab ich dann alle userids mit time älter als %Timestamp%.
    Und was soll ich unter 2) machen damit nur die übrig bleiben, die keine time neuer als %Timestamp% haben?

  7. #7
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    26.09.2005
    Ort
    Nürnberg
    Beiträge
    169
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    So, ich habe das Problem gelöst. Um nicht zu verwirren, hier nochmal die nötigen Infos:

    Tabelle "users" mit dem Feld "userid" und weiteren uninteressanten. "userid" ist hier Primärschlüssel.

    Tabelle "posts" mit dem Feld "userid", "posttime" und weiteren uninteressanten.
    "userid" ist hier ein Index auf die id in der oberen Tabelle und kommt daher mehrmals vor. "posttime" ist ein Unix Timestamp (= Sekunden seit 1.1.1970).

    Ich will folgendes:
    Alle "userid"s, welche (als Beispiel) die letzten 2 Wochen keinen post geschrieben haben. Soll heißen, dass in der Tabelle "posts" anhand ihrer "userid" seit 2 Wochen keinen neuen "posttime" mehr haben.

    Lösung:

    Code:
    SELECT userid
    FROM users
    WHERE userid NOT IN &#40;
       SELECT userid
       FROM posts
       WHERE posttime > 1195125506
       GROUP BY userid
       &#41;
    Der Timestamp 1195125506 ist hier einfach ein Beispiel, und passt auch nicht zu den 2 Wochen von oben.

    Getestet mit MySQL 4.1 und klappt wunderbar...

Ähnliche Themen

  1. JavaScript: select-box onchange: neue select-box
    Von Jan_K im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 20.08.2008, 16:43
  2. select/option problem mit ff
    Von Landru im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 17.09.2006, 21:50
  3. problem mit select?
    Von phore im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 31.01.2006, 19:41
  4. problem mit Pulldown-Menü (<select></select>)
    Von magicgerd im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 23.01.2006, 18:38
  5. Problem mit <select . . .>
    Von step5 im Forum HTML & CSS Forum
    Antworten: 6
    Letzter Beitrag: 08.12.2005, 15:29

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •