Announcement

Collapse
No announcement yet.

Stimmt die Anfrage

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

  • Stimmt die Anfrage

    Hallo,

    also ich habe eine Tabelle Zeit(ZeitID, Tag, Woche, ...), eine weitere Tabelle Produkt(ProduktID, Artikel, ...) und eine Tabelle Verkauf(ProduktID, ZeitID, ...).
    Nun möchte ich eine Bereichsabfrage erstellen. Wie würde diese aussehen, wenn ich nur die Dimensionen Produkt und Zeit habe?
    Mein Gedanke: Wie sieht der Verkauf bei Butter bis Nudeln von Dienstag bis Donnerstag?
    So meine anfrage:
    Code:
    select tag, artikel from zeit, produkt where artikel<="Butter" and artikel>="Nudeln" and tag>"Montag" and tag<"Freitag";
    stimmt das so?

    lg

  • #2
    stimmt das so?
    Überleg mal selbst. Du bist eine Datenbank und jemand möchte von dir wissen, welche Werte zwischen den Strings Butter und Nudeln liegen. da wäre z.B. alle Wörter die mit C, D, E ... M beginnen.
    Das gleiche mit den Wochentagen. Du machst nur alphanummerische Vergleiche. In diesem Fall kommt Dienstag vor Montag und Donnerstag vor Mittwoch.

    Das ist also nichts. Wenn Du auf eine bestimmte Wertemenge einschränken möchtest, dann musst Du mit
    Code:
    WHERE spalte in('Wert1','Wert2','...')
    arbeiten. IN ist übrigends eine implizite OR Verknüpfung die du analog verwenden kannst. Du musst sie nur entsprechend Klammern wenn Du sie zusammen mit AND verwendest.

    Wenn Du einen Zeitbereich abfragen möchtest, dann musst Du die entsprechenden Datumsfunktionen deiner DB verwenden, damit diese auch versteht was Du eigentlich von ihr willst. Diese Datumsfunktionen funktionieren mit den entsprechenden Datumsspaltentypen. Speicherst Du in deinem ER-Modell ein Datum nicht in einem dafür vorgesehenem Feld, dann gehe zurück auf Los und beginne nochmal von vorne.

    Des weiteren fehlt in deiner Abfrage die JOIN Bedingung mit denen Du die beiden Tabellen verknüpfst, was zu einem kartesischem Produkt führt und dein Ergebnis noch interessanter machen dürfte

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      hmmmm, also kann ich nicht so eine anfrage beantworten: Wie fällt der Verkauf bei Butter bis Nudeln von Dienstag bis Donnerstag aus?

      das wird kompliziert. dabei wollte ich im prinzip eigentlich nur ein kleines beispiel für eine bereichsanfrage durchführen.

      Comment


      • #4
        ich verstehe es einfach nicht und komme nicht weiter, bitte um Hilfe!!!!

        Comment


        • #5
          Eine Bereichsabfrage geht schon, auch über Text ... nur muss man schon etwas nachdenken, um auch das gewünschte Ergebnis zu erhalten.
          where artikel<="Butter" and artikel>="Nudeln"
          Schlag mal ein Telefonbuch auf und suche mal alle Namen raus, die vor (<=) den Namen "Butter" liegen und (and) zugleich nach (>=) dem Namen "Nudeln" kommen.
          Das dürften nicht also zuviel werden; ich tippe mal auf 0,0

          =>
          where artikel >= "Butter" and artikel <= "Nudeln"

          P.S. "Dienstag" liegt auch nicht gerade zwischen "Montag" und "Freitag"; rein textuell betrachtet
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment

          Working...
          X