[SQL allgemein] SELECT-Abfrage mit JOIN

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

  • [SQL allgemein] SELECT-Abfrage mit JOIN

    Hallöchen,
    brauche ein wenig Schützenhilfe, da ich auf dem Schlauch stehe.

    Habe zwei Tabellen: Tabelle1 und Tabelle2

    In Tabelle2 müssen zwei Felder auf Gültigkeit überprüft werden (=Datum von bis zwischen Vorgabewert1 und Vorgabewert2), dann bekomme ich eine Artikelnummer über ein weiteres Feld heraus, diese muss ich dann auf Tabelle1 anwenden, um alle Artikeldetails herauszubekommen.
    Wie gehe ich einfachsten vor, um alles in einem SELECT-Statement zu formulieren?

    Danke für Eure Hilfe!
    Mario Heiß IT-Services

  • #2
    select a.col1, a.col2, ... b.col1, b.col2, ... from
    tbl1 a inner join tbl2 b on a.articleno=b.articleno
    where b.dtcol between dtstart and dtend

    Kommentar


    • #3
      *

      Vielen Dank.

      Wenn ich ein SELECT * ... verwende, bekomme ich dann alle Felder von tbl1 und tbl2, die ich dann über index ansprechen kann?

      z.B. a.[0] und b.[21]

      Weiteres Problem:
      Ich muss die Werte dtstart und dtend vorher mit PHP-Funktionen bearbeiten, weil Sie in der DB nicht als UNIX-Timestamp stehen. Sieht so aus:
      $aktuellesdatum = explode(".",date("d.m.Y"));
      $aktuellesdatum_stamp = mktime("","","",$aktuellesdatum1],$aktuellesdatum[0],$aktuellesdatum[2]);
      $angebotdatumbis = explode("-",$b.datumbis);
      $subdatumbis = mktime("","","",$angebotdatumbis[1],$angebotdatumbis[2],$angebotdatumbis[0]);
      $angebotbis = date("d.m.Y",$subdatumbis);
      $angebotdatumvon = explode("-",$aktionsartikel_1[19]);
      $subdatumvon = mktime("","","",$angebotdatumvon[1],$angebotdatumvon[2],$angebotdatumvon[0]);
      if ($subdatumbis >= $aktuellesdatum_stamp && $subdatumvon <= $aktuellesdatum_stamp) { dann mach was }

      Wie bringe ich das in das SELECT-Statement?
      Zuletzt geändert von MHeiss; 29.06.2004, 21:05.
      Mario Heiß IT-Services

      Kommentar


      • #4
        Re: *

        Original geschrieben von MHeiss
        Vielen Dank.

        Wenn ich ein SELECT * ... verwende, bekomme ich dann alle Felder von tbl1 und tbl2, die ich dann über index ansprechen kann?
        ja aber nicht so
        z.B. a.[0] und b.[21]
        sondern über ein Array durch Aufruf einer PHP-Funktion, s. dazu mysql_fetch_array in der Doku falls du PHP/MySQL einsetzt, sonst nach fragen.

        Kommentar


        • #5
          OK, das bekomme ich hin!

          Weiteres Problem:
          Ich muss die Werte dtstart und dtend vorher mit PHP-Funktionen bearbeiten, weil Sie in der DB nicht als UNIX-Timestamp stehen. Sieht so aus:
          $aktuellesdatum = explode(".",date("d.m.Y"));
          $aktuellesdatum_stamp = mktime("","","",$aktuellesdatum1],$aktuellesdatum[0],$aktuellesdatum[2]);
          $angebotdatumbis = explode("-",$b.datumbis);
          $subdatumbis = mktime("","","",$angebotdatumbis[1],$angebotdatumbis[2],$angebotdatumbis[0]);
          $angebotbis = date("d.m.Y",$subdatumbis);
          $angebotdatumvon = explode("-",$aktionsartikel_1[19]);
          $subdatumvon = mktime("","","",$angebotdatumvon[1],$angebotdatumvon[2],$angebotdatumvon[0]);
          if ($subdatumbis >= $aktuellesdatum_stamp && $subdatumvon <= $aktuellesdatum_stamp) { dann mach was }

          Wie bringe ich das in das SELECT-Statement?
          Mario Heiß IT-Services

          Kommentar


          • #6
            www.schattenbaum.net/php

            Kommentar


            • #7
              LÖSUNG GEFUNDEN!

              Also ich habe die ultimative Lösung gefunden, nachdem ich mir mal im Handbuch die JOIN(T)S etwas angesehen habe:

              SELECT * FROM `tbl1` AS A LEFT OUTER JOIN `tbl2` AS B ON A.artnr=B.artnr WHERE B.bedingungsfeld=1

              Jetzt kann ich dann meine Abfragefunktionen für das Datum wunderbar nach dem SELECT jeweils durchführen.

              Danke für den tollen Gedankenaustausch!
              Mario Heiß IT-Services

              Kommentar


              • #8

                Kommentar


                • #9
                  Original geschrieben von asp2php
                  Wenn gelobt wird, sollt eman sich bedanken


                  An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                  Kommentar


                  • #10
                    Original geschrieben von MaxP0W3R
                    Wenn gelobt wird, sollt eman sich bedanken
                    wie gelobt? ich wundere mich nur, weil das was er gefunden hat, nicht gerade das was er anfangs suchte.

                    Kommentar


                    • #11
                      OffTopic:
                      Egal, Hauptsache du wurdest gelobt oder


                      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                      Kommentar

                      Lädt...
                      X