Ergebnis 1 bis 9 von 9

Thema: Hilfe bei einer Abfrage

  1. #1
    Chaosmaker ist offline Neuer Benutzer
    Registriert seit
    22.03.2010
    Beiträge
    5

    Frage Hilfe bei einer Abfrage

    Hallo liebes Forum,

    ich bin neu hier, weil ich eure Hilfe benötige. Ich schreibe eine Ausarbeitung zu einem Projekt innerhalb eines Praktikums und werde von der betreffenden Firma hängen gelassen.

    Ich habe ein ER-Diagramm erstellt, welches eine Kalkulation abbildet wie sie (komplexer) im Unternehmen stattfindet. Dazu hab ich auch die Relationen erstellt.

    Nun möchte ich eine Abfrage simulieren, in der über die Eingabe der Auftragsnummer alle Teile des betreffenden Auftrags aufgelistet werden.

    Meine Frage an euch, ist mein Gedankengang richtig? Wenn nicht, was muss ich anders machen?

    Danke für eure Hilfe
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von Chaosmaker Beitrag anzeigen
    Hallo liebes Forum,

    ich bin neu hier, weil ich eure Hilfe benötige. Ich schreibe eine Ausarbeitung zu einem Projekt innerhalb eines Praktikums und werde von der betreffenden Firma hängen gelassen.

    Ich habe ein ER-Diagramm erstellt, welches eine Kalkulation abbildet wie sie (komplexer) im Unternehmen stattfindet. Dazu hab ich auch die Relationen erstellt.

    Nun möchte ich eine Abfrage simulieren, in der über die Eingabe der Auftragsnummer alle Teile des betreffenden Auftrags aufgelistet werden.

    Meine Frage an euch, ist mein Gedankengang richtig? Wenn nicht, was muss ich anders machen?

    Danke für eure Hilfe
    Du solltest Dir mal JOINS anschauen. Ich mag nicht auf die Bilder eingehen wollen, nur eine kurze Demo von JOINS:

    Code:
    test=# create table auftrag (id int primary key, datum date);
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "auftrag_pkey" for table "auftrag"
    CREATE TABLE
    test=# create table auftrag_position(auftrag_id int references auftrag, teil text);
    CREATE TABLE
    test=# copy auftrag from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself.
    >> 1    2010-03-23
    >> 2    2010-03-23
    >> 3    2010-03-23
    >> \.
    test=# copy auftrag_position from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself.
    >> 1    teil1
    >> 2    teil1
    >> 2    teil2
    >> 2    teil3
    >> \.
    test=# select a.datum, p.teil from auftrag a left join auftrag_position p on a.id=p.auftrag_id where a.id = 2;
       datum    | teil
    ------------+-------
     2010-03-23 | teil1
     2010-03-23 | teil2
     2010-03-23 | teil3
    (3 rows)
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Chaosmaker ist offline Neuer Benutzer
    Registriert seit
    22.03.2010
    Beiträge
    5

    Standard

    Danke für die schnelle Antwort, aber da ich quasi ein Laie in SQL bin, will ich eigentlich nur wissen ob ich mit meinem Query ans Ziel komme, bzw. ob es richtig ist.

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von Chaosmaker Beitrag anzeigen
    Danke für die schnelle Antwort, aber da ich quasi ein Laie in SQL bin, will ich eigentlich nur wissen ob ich mit meinem Query ans Ziel komme, bzw. ob es richtig ist.
    Gut, dann als schnelle und kurze Antwort: nein, es ist nicht richtig und du kommst damit nicht ins Ziel ... aber was hast Du sicher schon selber festgestellt.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  5. #5
    Chaosmaker ist offline Neuer Benutzer
    Registriert seit
    22.03.2010
    Beiträge
    5

    Standard

    das ist eben das Problem. Ich kann es nicht wirklich überprüfen...
    Meinst du, du könntest mir eine Query aufschreiben die funktioniert?

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von Chaosmaker Beitrag anzeigen
    das ist eben das Problem. Ich kann es nicht wirklich überprüfen...
    Meinst du, du könntest mir eine Query aufschreiben die funktioniert?
    Für Geld ja, dafür würde ich mir die Mühe machen, zu versuchen, aus Deinen Bildern und so schlau zu werden ;-)

    Ich hab Dir ja schon gesagt, beschäftige Dich mit der JOIN-Syntax. Außerdem vergiß select * in einer produktiven Umgebung und erst recht in einem Konstrukt wie

    Code:
    where id in (select * from other_table) ...
    Dies wird mit höchster Sicherheit nicht funktionieren.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    Chaosmaker ist offline Neuer Benutzer
    Registriert seit
    22.03.2010
    Beiträge
    5

    Standard

    Okay, ich hab mich mal versucht. Da ich aber nicht so fit bin und die Zeit drängt, hab ich mich auf drei Relationen beschränkt.

    Select Kunde, Ident-Nr., Name, Preis
    From Auftrag, enthält, Position
    Where Auftrag.Auft.-Nr. = enthält.Auft.-Nr.
    And enthält.Ident-Nr. = Position.Ident-Nr.
    And Auftrag.Auft-Nr. = 1234

  8. #8
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von Chaosmaker Beitrag anzeigen
    Okay, ich hab mich mal versucht. Da ich aber nicht so fit bin und die Zeit drängt, hab ich mich auf drei Relationen beschränkt.

    Select Kunde, Ident-Nr., Name, Preis
    From Auftrag, enthält, Position
    Where Auftrag.Auft.-Nr. = enthält.Auft.-Nr.
    And enthält.Ident-Nr. = Position.Ident-Nr.
    And Auftrag.Auft-Nr. = 1234
    Sieht schon besser aus, Du wirst aber Deine Spaltennamen mit "" angeben müssen wegens der Punkte drin.

    Wobei ich die expliziete Angabe des JOINS 'schöner' empfinde, wie schon in diesem Thread gezeigt.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  9. #9
    Chaosmaker ist offline Neuer Benutzer
    Registriert seit
    22.03.2010
    Beiträge
    5

    Standard

    Danke, du hast mir sehr geholfen!

    Besten Gruß,

    Torsten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum