SQL: Where Problem

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

  • SQL: Where Problem

    Hallo,

    ich habe heute den ganzen Abend und letztens schon vor diesem Problem gesessen und ebend noch das Internet abgegrast und mir auch einige Tutorials zu SQL angesehen, aber keine Problemstellung / Lösung konnte mein Problem lösen.


    Ich habe 2 Tabellen ...

    + in der einen stehen Domains mit der ID , NAME, STATUSID
    + eine Tabelle mit einer History was für Staten (Statusse?) die Domain hatte (REG,UPD,BV,GO USW)


    Jetzt möchte ich aus der Domaindatenbank alle Einträge auslesen, dessen letzter!!! Status auf GO steht .... ich habe folgendes gemacht:

    PHP-Code:
    SELECT 
    kundendomains
    .id AS domainid
    kundendomains.domain AS name
    domains_history.status

    FROM kundendomains
    domains_history

    WHERE kundendomains
    .id domains_history.domainid and domains_history.status='GO'
    ORDER BY domainid asc 

    Problem ist jetzt er findet alle Domains die ein GO in der History haben ... er darf die Domain aber nur finden wenn GO auch der letzte Historyeintrag ist (es gibt auch ein Zeitfeld nach dem man sortieren könnte) ...

    Gibt es eine Möglichkeit ihm zu sagen dass er bei diesem abgleich immer nur den letzten Eintrag zum abgleichen ob = GO ist nehmen soll ?


    // Edit:

    Theoretisch könnte ich jeden Domaineintrag so durchlaufen und zu jeder Domain eine Zusatzabfrage machen (z.B. domain nr 5) und dann abfragen ,.... aber ich finde das zu rechenlastig, dass muss doch auch in einer einzigen abfrage gehen ... :-?!

    PHP-Code:
    $domain $hp->fetch_object($hp->query("select * from domains_history where domainid=5 order by timestamp desc limit 0,1"));
    if (
    $domain->status == "GO")
      {
      ...
      } 
    Diese Grundlage müsste zur Prüfung herangezogen werden und nicht alle Historyeinträge die vorhanden sind ...

    Zuletzt geändert von WiZARD; 19.12.2004, 00:14.

  • #2
    Bitte einmal DB-Dumps und Verknüpfungen erklären.

    Interessant könnte für Dich JOIN's sein... !

    Zusammengefasst:
    • JOIN's (LEFT;INNER;RIGHT)
    • MIN(), MAX()


    Code:
    SELECT 
    
    k.id AS domainid, 
    k.domain AS name, 
    h.status,
    MAX(h.timestamp)
    
    FROM kundendomains k
    
    INNER JOIN domains_history h ON  k.id = h.domainid 
    
    WHERE  h.status='GO'
    GROUP BY domainid
    ORDER BY domainid asc
    ungetestet, und maybe kannst auch DISTINCTROW(MAX( .. probieren
    Zuletzt geändert von xManUx; 19.12.2004, 14:35.

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

    Kommentar


    • #3
      Danke ,.... ich glaube damit hast du mir sehr weitergeholfen ... der Befehl MAX fehlte mir einfach irgendwie , ich probier das mal durch ... !

      Kommentar

      Lädt...
      X