SQL: Where Problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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 ...

    Last edited by 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
    Last edited by 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.

    Comment


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

      Comment

      Working...
      X