sql query 2 Tabellen welche Zeilen fehlen

Hallo,

ok, INSERT läuft, somit ist der Basis Eintrag gemacht;

Code;

INSERT INTO sb VALUES
(NULL,
:Kunden,
:Aufgaben,
:done,
:bw01,
:bw02,
:bw03,
:bw04,
:bw05,
:bw06,
:bw07,
:bw08,
:bw09,
:bw10);

Ist nicht wirklich schwierig:-0,
Habe nicht gewusst, dass ich die Aliases (Kunden/Aufgaben) vom SELECT übernehmen kann,muss!

So..

Der Hammer wäre jetzt, wenn ich in diesem Script eine Abfrage machen könnte, ob dieser Record (Kunden, Aufgaben) schon existiert und wenn ja, soll er einen UPDATE machen. Kann man das vom SELECT übernehmen?
 
Hallo,

Hab lange probiert und habs soweit hingebracht, dass er mal einen doppelten eintrag schreibt.
Irgendwie hab ich es aber hingebracht dass es nicht mehr geht.

Könnt Ihr mir bitte helfen, diesen INSERT und ON DUPLICATE UPDATE anzupassen, resp. zu ergänzen. Ich drehe im Kreis

Hier nochmals den SELECT
--------------------------------------------------
select
k.kunden_id as Kunden,
a.id as Aufgaben,
ka.done,
ka.bw01,
ka.bw02,
ka.bw03,
ka.bw04,
ka.bw05,
ka.bw06,
ka.bw07,
ka.bw08,
ka.bw09,
ka.bw10,
case
when ka.kunden_id is null then ''
else 'Erledigt'
end as status
from
anf a
cross join
kunden k
left join
sb ka
on
ka.kunden_id = k.kunden_id
and
ka.anf_id = a.id
order by
k.kunden_id,
a.id



Hier mal ein Versuch zumindest wieder einen Doppelten Eintrag hinzukriegen, Funktioniert aber nicht mehr,

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

INSERT INTO sb VALUES
(NULL,
:Kunden,
:Aufgaben,
:done,
:bw01,
:bw02,
:bw03,
:bw04,
:bw05,
:bw06,
:bw07,
:bw08,
:bw09,
:bw10)

ON DUPLICATE KEY UPDATE
Kunden = :Kunden,
Aufgaben = :Aufgaben,
done = :done,
bw01 = :bw01,
bw02 = :bw02,
bw03 = :bw03,
bw04 = :bw04,
bw05 = :bw05,
bw06 = :bw06,
bw07 = :bw07,
bw08 = :bw08,
bw09 = :bw09,
bw10 = :bw10;

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

Es kommt immer die Fehlermeldung, aber ich habe gemeint, so hab ich zumindest mal einen Doppelten Eintrag erstellen können, funktioniert aber auch nicht mehr.

Unknown column 'Kunden' in 'field list'
 
Du solltest eine Feld-Liste vor dem INTO mitgeben
SQL:
INSERT INTO table (field1, field2)
VALUES ('value1', 'value2')
ON DUBLICATE ....
 
Zuletzt bearbeitet von einem Moderator:
Habe ich gemacht, aber eben, es kommt auch hier eine Fehlermeldung

Column count doesn't match value count at row 1
 
Du musst gleich viele Felder angeben wie du nachher Werte angibst. Das sagt diese Fehlermeldung aus.
Zeig mal dein Versuch und dann sehen wir eher wo du dich verzählt hast.
 
Was mach ich falsch,

Unknown column 'Kunden' in 'field list'

INSERT INTO sb (Kunden, Aufgaben, done, bw01,bw02,bw03, bw04,
bw05, bw06, bw07, bw08, bw09, bw10)
VALUES
(:Kunden,
:Aufgaben,
:done,
:bw01,
:bw02,
:bw03,
:bw04,
:bw05,
:bw06,
:bw07,
:bw08,
:bw09,
:bw10)

ON DUPLICATE KEY UPDATE
Kunden = :Kunden,
Aufgaben = :Aufgaben,
done = :done,
bw01 = :bw01,
bw02 = :bw02,
bw03 = :bw03,
bw04 = :bw04,
bw05 = :bw05,
bw06 = :bw06,
bw07 = :bw07,
bw08 = :bw08,
bw09 = :bw09,
bw10 = :bw10;
 
Hier nochmals den SELECT

select
k.kunden_id as Kunden,
a.id as Aufgaben,
ka.done,
ka.bw01,
ka.bw02,
ka.bw03,
ka.bw04,
ka.bw05,
ka.bw06,
ka.bw07,
ka.bw08,
ka.bw09,
ka.bw10,
case
when ka.kunden_id is null then ''
else 'Erledigt'
end as status
from
anf a
cross join
kunden k
left join
sb ka
on
ka.kunden_id = k.kunden_id
and
ka.anf_id = a.id
order by
k.kunden_id,
a.id
 
select
k.kunden_id as Kunden,
a.id as Aufgaben,
ka.done,
ka.bw01,
ka.bw02,
ka.bw03,
ka.bw04,
ka.bw05,
ka.bw06,
ka.bw07,
ka.bw08,
ka.bw09,
ka.bw10,
case
when ka.kunden_id is null then ''
else 'Erledigt'
end as status
from
anf a
cross join
kunden k
left join
sb ka
on
ka.kunden_id = k.kunden_id
and
ka.anf_id = a.id
order by
k.kunden_id,
a.id

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


INSERT INTO sb (Kunden, Aufgaben, done, bw01,bw02,bw03, bw04,
bw05, bw06, bw07, bw08, bw09, bw10)
VALUES
(:Kunden,
:Aufgaben,
:done,
:bw01,
:bw02,
:bw03,
:bw04,
:bw05,
:bw06,
:bw07,
:bw08,
:bw09,
:bw10)

ON DUPLICATE KEY UPDATE
Kunden = :Kunden,
Aufgaben = :Aufgaben,
done = :done,
bw01 = :bw01,
bw02 = :bw02,
bw03 = :bw03,
bw04 = :bw04,
bw05 = :bw05,
bw06 = :bw06,
bw07 = :bw07,
bw08 = :bw08,
bw09 = :bw09,
bw10 = :bw10;

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

Unknown column 'Kunden' in 'field list'
 
Schau mal dein SELECT an. Das Fled heisst nicht Kunden sondern kunden_id in deiner Tabelle. (ebenfalls bei aufgabe darauf achten wie das Feld genau heisst)
Du musst schon die Feldnamen der Tabelle und nicht die Aliase irgend eines SELECTS angeben.
Dasselbe im UPDATE-Teil

SQL:
INSERT INTO sb (
-- Hier ide ID-Felder so angeben wie sie in der DB auch heissn
    kunden_id, 
    anf_id, 
    done, 
    bw01,
    bw02,
    bw03, 
    bw04,
    bw05, 
    bw06, 
    bw07, 
    bw08, 
    bw09, 
    bw10
) VALUES (
    :Kunden,
    :Aufgaben,
    :done,
    :bw01,
    :bw02,
    :bw03,
    :bw04,
    :bw05,
    :bw06,
    :bw07,
    :bw08,
    :bw09,
    :bw10
)
ON DUPLICATE KEY UPDATE
-- Ich geh mal davon aus, dass kunden_id / anf_id der PrimaryKey ist
-- Ergo diese hier nicht mehr anrühren
    -- kunden_id = :Kunden,
    -- anf_id = :Aufgaben,
    done = :done,
    bw01 = :bw01,
    bw02 = :bw02,
    bw03 = :bw03,
    bw04 = :bw04,
    bw05 = :bw05,
    bw06 = :bw06,
    bw07 = :bw07,
    bw08 = :bw08,
    bw09 = :bw09,
    bw10 = :bw10
;

btw. Bitte in Zukunft deine SQLs in SQL-Tags setzen
[code=sql]INSERT INTO....;[/code]
 
Zuletzt bearbeitet von einem Moderator:
Zurück