Ilja: bei insert into table einzelne ids weglassen

Beitrag lesen

yo,

Handelt sich um ein Abo System. D.h. die Bestellung wird vom Admin initiert und bei jeder Bestellung kann nur ein Produkt ausgeliefert werden.

also mit abos kenne ich mich sehr gut aus und ich merke, wir reden von anderen begrifflichkeiten. eine bestelllung ist ein vertrag und dieser muss schon vorher zustande gekommen sein, damit ein admin tätig werden kann. was du sicherlich meinst sind die jeweiligen zyklen eines bereits vorher bestellten abos. oder täusche ich mich da ?

Wie würde so was aussehen? Wäre natürlich viel einfacher.
insert into Bestellung (kunden_id, produkt_id, bestell_datum) values ('$kunden_id[1]','$produkt_id','$datum'),('$kunden_id[2]','$produkt_id','$datum'), (etc)???

werde ich weiter unten anführen, wie ein INSERT aus einem SELECT heraus funktioniert.

NEBENFRAGE: Datum: wenn ich das Datum an dem die Anweisung ausgeführt wurde ein speichern will wie lautet das bei MySql? CURRENT_DATE nimmt er ja nicht auch NOW und DATE werden nicht akzeptiert. Habe das so gelöst, daß ich $datum über PHP das heutige Datum zuweise -aber da gibt es doch sicherlich auch eine vernünftigere Lösung.

hmm, die frage habe ich jetzt nicht gehört. deswegen schauchst du ganz schnell auf die webseite von mysql und schauchst in der Doku unter Datumsfunktionen nach.

Select kunden_id from Bestellung where produkt_id=gewähltes_produkt_id
hier habe ich alle Kunden die das Produkt schon mal bekommen haben.

ist doch schon mal die halbe miete, dazu könntest du noch alle produkte anzeigen, die diese kunden bereits bekommen haben, damit bei der händischen auswahl eines neuen produktes der operator einen überblick hat. GROUP_CONCAT wäre ein stichwort für dich.

So weit bin ich ja gekommen, nur mir ist immer noch nicht klar, wie ich nun alle Kunden die das Produkt noch nicht bekommen haben aus der Menge der gesamt Kunden raus bekomme??

recht trivial die aufgabe, was du brauchst ist ein OUTER JOIN in verbindung mit einer INSERT anweisung.

INSERT INTO Bestellung (kunden_id, produkt_id, bestell_datum)
SELECT kunden_id, gewähltes_produkt_id, und_hier_die_Datumsfunktion
FROM Bestellung b
LEFT JOIN produkttabelle p ON p.produkt_id = b.produkt_id
WHERE p.produkt_id = gewähltes_produkt_id
AND p.produkt_id IS NULL
;

Ilja