Tach!
Besucher einer Messe sollen einen Vermerk in ihren Stammsatz (adr1) bekommen, wenn weder Kontaktwünsche (kon1) noch Eventwünsche (evb1) gespeichert sind.
EXISTS beziehungsweise NOT EXISTS existieren.
SQL-Fehlermeldung:
#1241 - Operand should contain 1 column(s)
Hatte ich schon befürchtet, aber der Unter-select kommt mit diesem einen Feld nicht aus, die Anzahl der Wünsche müssen ermittelt werden:
UPDATE tm_adressen adr1 SET adr1.merkmalsleiste = CONCAT( SUBSTRING(merkmalsleiste,1,4), 'E' ) WHERE adr1.owner_id = '17' AND adr1.id = ( SELECT adr1.id ,adr1.bezeichnung ,adr1.nname ,adr1.vname ,COUNT(kon1.besucher_id) anzahl_kontaktwuensche ,COUNT(evb1.adress_id) anzahl_eventwuensche FROM tm_adressen adr1 [...]
Was soll denn dabei rauskommen? Du hast da einen Vergleich à la X = Y und gibst für Y eine Ergebnismenge aus, die größer als eine Zeile und eine Spalte ist. Wie soll ein Einzelwert gegen viele verglichen werden? Man kann X oder Y als Subquery besorgen, aber die darf dann auch nur einen einzelnen Wert als Ergebnis haben, sprich: eine Zeile, ein Wert.
Folgende Variante erzeugt
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT adr2.id ,adr2.bezeichnung ,adr2.nname ,adr2.vname ,COUNT(kon1.besuc' at line 9
AND adr1.id = adr2.id ( SELECT [...]
Was soll denn mit dem Ergebnis der Subquery passieren? Klar ist das ein Syntaxfehler. Sowas würde auch in natürlicher Sprache keinen gescheiten Satz ergeben.
denke ich zu kompliziert?
Ich würde sagen, du denkst nur nicht logisch. Du hast zwar eingangs den Anwendungsfall von außen betrachtet beschrieben. Aber nun musst du ihn auch aus technischer Sicht beschreiben. Welche(r) Wert(e) soll aus welchen Tabellen/Spalten/Funktionen genommen werden und mit welchem anderen Wert verglichen werden, oder was auch immer?
dedlfix.