SQL-Befehl gesucht

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von DenSe.

    SQL-Befehl gesucht

    Hallo,

    ich suche schon seit Tagen nach einem SQL-Befehl um einen Datensatz in eine Tabelle zu schreiben mit einem FK, der auf 2 PK's in zwei unterschiedlichen Tabellen verweist.

    SQL-Abfrage

    1. insert into table_name values ((select table_name_pk.pk from table_name_pk), 1, datum);


    Dieser Befehl funktioniert nicht. Die Fehlermeldung lautet:
    Cannot add or update a child row: a foreign key constraint fails

    Vielen Dank für eure Hilfe

    Viele Grüße

    DenSe :P
    Hi.
    Dafür gibt es keinen Extra befehl.

    SQL-Abfrage

    1. select table_name_pk.pk from table_name_pk


    Gibt dir all PK von der Tabelle table_name_pk zurück. Ich bezweifle das das in deinem Interesse ist.
    Ich könnte mir sowas vorstellen:

    SQL-Abfrage

    1. insert into table_name (fk, int, date) values (select table_name_pk.pk, 1, datum from table_name_pk where somecondition is true)
    Das ist meine Signatur und sie wird wunderbar sein!
    Hallo,

    leider funktioniert das auch nicht.

    vielleicht hilft ja eine genauere Erklärung:D
    und zwar habe ich eine Kassensoftware und möchte einen Artikel ins "Lager" einbuchen.

    der eigentliche Befehl lautet:

    SQL-Abfrage

    1. insert into lager (artikelnr, menge, datum) values ((select artikel.artikelnr from artikel where preis = 2.00 and wg = '170'), 1, '2016-08-02');


    lager.artikelnr ist dabei der fk der auf artikel.artikelnr refernziert.
    lager.artikelnr referenziert aber auch noch auf die spalte rabatt.artikelnr.
    Ich möchte in meinem Programm mit einer if-Anweisung entscheiden, ob lager.artikelnr aus artikel.artikelnr oder aus rabatt.artikelnr gezogen wird.

    Gruß DenSe
    Ich habe dir die Abfrage extra leicht umgeschrieben, was du offenbar komplett ignorierst ;)
    Du musst die weiteren Werte auch mit ins Select nehmen.

    Und du solltest garantieren das du wirklich EINEN Datensatz hast. WHERE preis = 2.00 AND wg = '170' kann im Zweifel auch mehrere Treffer haben.
    Daher gibt es den Primary Key und diesen nimmt man am besten als Bedingung.

    LG
    Das ist meine Signatur und sie wird wunderbar sein!
    mich wundert, dass du zwar preis und wg kennst, nicht aber den Primkey des Artikels. kannst du nicht was coden, dass du den Primkey immer kennst? - das ist schließlich das Entscheidende (wie du siehst) an einem Artikel-Datensatz.
    Ansonsten musste ihn halt erst noch abfragen - aber das ist eiglich ein kruder Workaround.
    Die Primkeys sollten immer Bestandteil der Datensätze sein.
    mich wundert, dass du zwar preis und wg kennst, nicht aber den Primkey des Artikels. kannst du nicht was coden, dass du den Primkey immer kennst? - das ist schließlich das Entscheidende (wie du siehst) an einem Artikel-Datensatz.
    Ansonsten musste ihn halt erst noch abfragen - aber das ist eiglich ein kruder Workaround.
    Die Primkeys sollten immer Bestandteil der Datensätze sein.


    Das Problem dahinter ist, dass ich ein Barcode habe, indem ein Preis und eine Warengruppe (wg) steht. Diesem Preis und Wg werden dann in der Datenbank eine Artikelnr. zugeordnet.

    -----------------------------------------------

    Die Lösung von petaod wirft mir eine SQL Syntax Error aus.

    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'select artikel.artikelnr, 1, '2016-08-02' from artikel where preis = 2.00 and wg' at line 1