INSERT INTO alle Datensätze aus Tab x deren Werte nicht in Tab y enthalten sind

Cappaja

Erfahrenes Mitglied
MYSQL INSERT INTO alle Datensätze aus Tab x deren Werte nicht in Tab y enthalten sind

Hallo,

ich habe eine Tabelle "equipment" und eine Tabelle "revoked_eq" welche über "eq_id" miteinander verknüpft sind. Über einen Button möchte ich alle "eq_id" aus "equipment" die nicht in "revoked_id" enthalten sind, in "revoked_id" einfügen. Über eine zusätzliche Dropdown-Box wird eine "bouquet_id" angegeben welche die zweite Spalte in "revoked_id" darstellt. Diese erhalte ich aus dem $_POST array und speichere den Wert in $bouquet. Somit haben alle Datensätze deren "eq_id" nicht in "revoked_eq" vorkamen dieselbe "bouquet_id".
Leider funktioniert meine SQL-Abfrage so nicht, wobei mein SUBSELECT alleinstehend einwandfrei funktioniert und mir wirklich alle "eq_id" angibt welche nicht in "revoked_eq" enthalten sind.
Als Fehlermeldung erhalte ich: #1242 - Subquery returns more than 1 row

Code:
INSERT INTO `revoked_eq`
VALUES($bouquet,  
(SELECT e.`eq_id`
FROM `equipment` e
LEFT JOIN `revoked_eq` r
USING ( `eq_id` )
WHERE r.`eq_id` IS NULL))

Ich nehme mal an, dass das Problem darin liegt, dass mir mein SUBSELECT mehrere Treffer liefert während meine Variable $bouquet eine Zeile zurückgibt...

Über eine Hilfestellung wäre ich sehr dankbar!

Mit freundlichen Grüßen

Cappaja
 
Zuletzt bearbeitet:
Habe es jetzt ganz nach dem Motto try and error doch noch hinbekommen. Unter VALUES kann i.d.R. nur 1 Wert angegeben werden (mit mehrfach gesetzten Klammern auch mehr, was aber hier nicht zum Ziel führen würde).
Für die Sonderform von INSERT INTO mit einem anschließenden SELECT funktioniert derselbe Code einwandfrei.

Code:
INSERT INTO `revoked_eq`
SELECT $bouquet, e.`eq_id` 
FROM `equipment` e 
LEFT JOIN `revoked_eq` r 
USING ( `eq_id` ) 
WHERE r.`eq_id` IS NULL

Grüße Cappaja
 

Neue Beiträge

Zurück