Nicht alle Daten anzeigen, abhängig von eine anderen Tabelle

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

  • Nicht alle Daten anzeigen, abhängig von eine anderen Tabelle

    Hi zusammen,

    ich habe die folgenden zwei Tabellen:

    1. Tabelle "artikel"[list=1][*]Feld "nr"[*]Feld "name"[/list=1]

    2. Tabelle "artikelstatus"[list=1][*]Feld "id" (auto_increment)[*]Feld "artikelnr" (Relation zu der 1. Tabelle)[*]Feld "datetime" (typ datetime)[*]Feld "lieferbar" (typ enum 'ja','nein')[/list=1]

    Die Tabelle "artikel" enthält nur wenige Artikel mit dessen Nummer und Beschreibung.

    In der zweiten Tabelle steht der aktuelle und die älteren Status ob der Artikel lieferbar ist/war oder nicht. Zum Beispiel:

    PHP-Code:
    id  art.nr  datetime             lieferbar
    1   100     2005
    -11-20 12:00     ja
    2   101     2005
    -11-20 12:00     ja
    3   102     2005
    -11-20 12:00     ja
    4   103     2005
    -11-20 12:00     ja
    5   100     2005
    -11-21 12:00     nein
    6   101     2005
    -11-21 12:00     nein
    7   100     2005
    -11-22 12:00     ja 
    Man kann erkennen, dass nur ein einzige Artikel, nämlich 101 zur Zeit nicht lieferbar ist, alle anderen Artikel sind lieferbar (oder wieder lieferbar).

    Die Liste die ich haben möchte sollte also folgendens rausspucken:
    code:

    PHP-Code:
    art.nr   name
    101      artikelbezeichnung 101 
    Also nur die Artikel welche zum letzten Zeitpunkt nicht lieferbar sind. Kann man soetwas mit einer SQL-Abfrage bekommen?

    Vielen Danke schon mal für eure Bemühungen!

    Gruß, Marc

  • #2
    einfach joinen mit einer WHERE bedingung
    Kissolino.com

    Kommentar


    • #3
      Hallo Wurzel,
      Original geschrieben von Wurzel
      einfach joinen mit einer WHERE bedingung
      Danke für die schnelle Antwort.

      MySQL ist für mich kein neues Thema und ich dachte am Anfang auch, dass es mit einem einfachen "WHERE" geht. Doch ich habs bis jetzt nicht hinbekommen.

      Vielleicht seh' ich auch vor lauter Bäumen den Wald nicht...

      Gruß, Marc

      Kommentar


      • #4
        poste mal die query
        Kissolino.com

        Kommentar


        • #5
          Original geschrieben von Wurzel
          poste mal die query
          Na ja, ich habe da nicht so wirklich eine Query. Ich habe schon ein Duzent ausprobiert.

          Aber hier die letzte:
          PHP-Code:
          SELECT
            a
          .nr,
            
          a.name,
            
          s.datetime,
            
          s.lieferbar
          FROM 
            artikel 
          AS a,
            
          artikelstatus AS s
          WHERE
            s
          .artikelnr=a.nr 
          Die o. g. Query liefert mir jetzt alle Artikel mit allen dazugehörigen Lieferstatus. Ich möchte aber nur den letzten Lieferstatus bekommen.

          Gruß, Marc

          Kommentar


          • #6
            Habe es hinbekommen. Vielleicht umständlich aber es funktioniert.

            PHP-Code:
            CREATE temporary TABLE lastdatetime (
            artikelnr MEDIUMINTNOT NULL ,
            datetime DATETIME NOT NULL ,
            PRIMARY KEY artikelnrdatetime )
            );

            INSERT INTO lastdatetime (artikelnrdatetimeSELECT a.noMAX(s.datetimeFROM artikelstatus AS sartikel AS a WHERE s.artikelr=a.no GROUP BY a.no;

            SELECT a.nrh.names.datetimes.lieferbar FROM lastdatetime AS ldt,
            artikelstatus AS s,
            artikel AS a
            WHERE 
            s
            .artikelnr=ldt.artikelnr AND
            s.datetime=ldt.datetime AND
            a.no=ldt.artikelnr 

            Kommentar

            Lädt...
            X