SQL-Abfrage
hans
- datenbank
Hallo,
kann mir jemand sagen, warum das nicht funktioniert?
UPDATE contents
SET vater\_ID
= '19' WHERE id
= '4' AND id
= '6' AND id
= '7' AND id
= '8' AND id
= '9'
vielen Dank
Halihallo hans
kann mir jemand sagen, warum das nicht funktioniert?
Wenn es nicht funktioniert, gibt es eine Fehlermeldung, die du uns
vorenthälst.
UPDATE
contents
SETvater\_ID
= '19' WHEREid
= '4' ANDid
= '6' ANDid
= '7' ANDid
= '8' ANDid
= '9'
ID klingt für mich nach Primär-Schlüssel. Ein PRIMARY KEY ist UNIQUE
und kommt somit nur einmal vor; was passiert also deiner Meinung,
wenn dieser unique Wert jeweils 4 _und_ 6 _und_ 7 ... annehmen soll.
Ist doch ein Wiederspruch zur Eindeutigkeit selber. Du wolltest
wahrscheinlich OR verwenden.
Viele Grüsse
Philipp
hi,
ID klingt für mich nach Primär-Schlüssel. Ein PRIMARY KEY ist UNIQUE
und kommt somit nur einmal vor;
selbst wenn nicht, dürfte es idR. unsinn sein, von _einer_ spalte zu verlangen, mehrere werte gleichzeitig anzunehmen.
gruss,
wahsaga
Halihallo wahsaga
ID klingt für mich nach Primär-Schlüssel. Ein PRIMARY KEY ist UNIQUE
und kommt somit nur einmal vor;selbst wenn nicht, dürfte es idR. unsinn sein, von _einer_ spalte zu verlangen, mehrere werte gleichzeitig anzunehmen.
Zu meiner Kenntnisnahme: [pref:t=76438&m=440321]
:-) .oO der Verfall beginnt Oo.
Viele Grüsse
Philipp
Hallo,
also wenn ich euch richtig verstehe, muss ich für jede zeile ne eigene SQL-Abfrage machen? Scheiße .... ich habe hier 600 zeilen, das muss doch auch leichter gehen?
gruß hansi
Halihallo hans
also wenn ich euch richtig verstehe, muss ich für jede zeile ne eigene SQL-Abfrage machen? Scheiße .... ich habe hier 600 zeilen, das muss doch auch leichter gehen?
Ja, ersetze AND durch OR und befasse dich mit bool'scher und
relationaler Algebra. So einfach ist das :-)
Viele Grüsse
Philipp
hallo philipp,
ok, du hast gewonnen. habe es mit dem or versucht und das klappt wunderbar. vielen dank für deine unterstützung!
gruß hansi
Hi,
man sollte den sprachlichen Gebrauch von UND / ODER nicht mit dem logischen Gebrauch von dergleichen verwechseln ;)
Du willst zwar 4 und 6 und 7 und 8 und 9 aber das Feld hat nur einen Wert und kann daher nur 4 order 6 oder 7 oder 8 oder 9 sein ;)
kannst es dir aber auch ganz einfach machen:
UPDATE contents
SET vater\_ID
= '19' WHERE id
IN (4,6,7,8,9);
Gruss,
Stefan
Hallo,
also wenn ich euch richtig verstehe, muss ich für jede zeile ne eigene SQL-Abfrage machen? Scheiße .... ich habe hier 600 zeilen, das muss doch auch leichter gehen?
Formuliere auch sprachlich korrekt. Du möchtest die Datensätze mit id="x" UND die Datensätze mit id="y" beeinflussen, also möchtest Du alle Datensätze beeinflussen, die entweder id="x" ODER id="y" haben.
viele Grüße
Axel
Halihallo hans
ID klingt für mich nach Primär-Schlüssel. Ein PRIMARY KEY ist UNIQUE
und kommt somit nur einmal vor; was passiert also deiner Meinung,
wenn dieser unique Wert jeweils 4 _und_ 6 _und_ 7 ... annehmen soll.
Ist doch ein Wiederspruch zur Eindeutigkeit selber. Du wolltest
wahrscheinlich OR verwenden.
Zudem hat das noch nicht einmal etwas mit Primary Key und Unique zu
tun. Ein Attribut hat nunmal ausschliesslich nur einen Wert, dass
die Datenbank hier absolut keinen zutreffenden Datensatz auszugeben
vermag wäre für mich die einzig logische Konsequenz; ansonsten ist
deine Datenbank defekt.
Viele Grüsse
Philipp
use Mosche;
Ein Attribut hat nunmal ausschliesslich nur einen Wert, dass
die Datenbank hier absolut keinen zutreffenden Datensatz auszugeben
vermag wäre für mich die einzig logische Konsequenz; ansonsten ist
deine Datenbank defekt.
Aber nur aufgrund der Forderungen der ersten Normalform (Attribute müssen atomar sein).
Ich weiss leider gerade nicht, wie ein DBMS auf Mengen reagiert (ob der Operator = dafür überhaupt definiert ist), aber man könnte dies so implemetieren, dass tatsächlich
id = 4 and id = 6 (das gleiche wie id = {4, 6} bzw eher {4, 6} C id (C hierbei "Teilmenge von"))
use Tschoe qw(Matti);
hallo Philipp,
warum ist das ein widerspruch. es ist richtig id ist ein primärschlüssel. in meiner tabelle sind zwanzig einträge und ich möchte alle einträge mit dem primärschlüssel 4,6,7,8,9 bearbeiten und diesen den wert 19 im feld vater_ID zuweisen. vom verständnis denke ich sicher nachvollziehbar, aber die abfrage scheint so nicht richtig zu sein. wo liegt deiner meinung nach der fehler?
gruß hansi
Halihallo hansi
warum ist das ein widerspruch. es ist richtig id ist ein primärschlüssel. in meiner tabelle sind zwanzig einträge und ich möchte alle einträge mit dem primärschlüssel 4,6,7,8,9 bearbeiten und diesen den wert 19 im feld vater_ID zuweisen. vom verständnis denke ich sicher nachvollziehbar, aber die abfrage scheint so nicht richtig zu sein. wo liegt deiner meinung nach der fehler?
OR, nicht AND.
Du willst die Datensätze mit der ID 4 _oder_ 6 _oder_ ... ändern,
nicht die Datensätze, deren ID 4 _und_ 6 _und_ ... ist.
Ein Datensatz wird nur selektiert, wenn die WHERE-Bedingung wahr ist.
Eine WHERE-Bedinung der Form "id=4 AND id=5" kann _nie_ wahr sein,
dehalb werden keine Datensätze selektiert und deshalb wird auch nix
geändert.
Viele Grüsse
Philipp
hallo philipp
warum möchtest du mir unbedingt was einreden? :-) *gg nein, ich möchte die datensätze mit der ID 4 und 6 und 7 ... in vater_ID den gleichen Wert zuweisen. geht das?
hi,
warum möchtest du mir unbedingt was einreden? :-)
und warum möchtest du dich absolut lernresistent anstellen, anstatt endlich mal den unterschied zwischen einem _logischen_ UND oder ODER zu begreifen ...?
gruss,
wahsaga
Hallo,
anstatt endlich mal den unterschied zwischen einem _logischen_ UND oder ODER zu begreifen ...?
Ähm?
Den Unterschied _zwischen_ einem Etwas _oder_ einem anderen Etwas?
Du meinst den Unterschied zwischen einem logischen UND _und_ einem logischen ODER.
*scnr*
viele Grüße
Axel
warum ist das ein widerspruch. es ist richtig id ist ein primärschlüssel. in meiner tabelle sind zwanzig einträge und ich möchte alle einträge mit dem primärschlüssel 4,6,7,8,9 bearbeiten und diesen den wert 19 im feld vater_ID zuweisen. vom verständnis denke ich sicher nachvollziehbar, aber die abfrage scheint so nicht richtig zu sein. wo liegt deiner meinung nach der fehler?
Aus DIESEM Zusammenhang:
UPDATE contents
SET vater\_ID
= '19' WHERE id
IN (4,6,7,8,9);
Hallo Philipp,
UPDATE
contents
SETvater\_ID
= '19' WHEREid
= '4' ANDid
= '6' ANDid
= '7' ANDid
= '8' ANDid
= '9'ID klingt für mich nach Primär-Schlüssel. Ein PRIMARY KEY ist UNIQUE
und kommt somit nur einmal vor; was passiert also deiner Meinung,
wenn dieser unique Wert jeweils 4 _und_ 6 _und_ 7 ... annehmen soll.
Ist doch ein Wiederspruch zur Eindeutigkeit selber.
Richtig, allerdings ist das nicht nur bei einem Primär-Schlüssel so. Meiner Ansicht nach kann _kein_ Feld innerhalb eines Datensatzes _mehrere_ Inhalte gleichzeitig haben, oder? ;-)) Die SQL-Formulierung
... WHERE Feld1="Wert" AND Feld1="anderer Wert"
führt _immer_ zu einer leeren Datensatzmenge.
Du wolltest wahrscheinlich OR verwenden.
Ja, und die Back-Ticks weglassen.
viele Grüße
Axel