Announcement

Collapse
No announcement yet.

Update mit Select unterabfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Update mit Select unterabfrage

    Hallo,
    ich habe zwei tabellen "inhalt" und "kisten"

    inhalt hat die Felder
    Vorname
    Nachname
    Vorgang (Ja oder Nein)
    Kisten-Nr

    kisten hat die Felder
    Kisten-Nr
    KisteFrei

    Jetzt möchte ich eine Update in Tabelle "kisten" machen, sobald in Tabelle inhalt im Feld `Vorgang`'Ja' steht soll in
    Tabelle "kisten" das Feld `Kistefrei` mit 'Ja' besetzt werden, natürlich bezogen auf die dazugehörige Kisten-Nr

    So habe ich es probiert
    Der select liefert mir genau das was ich brauche:
    Code:
    select `Vorgang` ,`Kisten-Nr` from inhalt  WHERE `Vorgang`='Ja'
    kombiniert mit Update geht nicht ...
    Code:
    update set kisten `KisteFrei`,`Kisten-Nr` = (select `Vorgang` ,`Kisten-Nr` from inhalt  WHERE `Vorgang`='Ja')
    Wie kombiniere ich beide Abfragen?????

  • #2
    Originally posted by SimplyFred View Post
    ...Jetzt möchte ich eine Update in Tabelle "kisten" machen, sobald in Tabelle inhalt im Feld `Vorgang`'Ja' steht soll in
    Tabelle "kisten" das Feld `Kistefrei` mit 'Ja' besetzt werden, natürlich bezogen auf die dazugehörige Kisten-Nr...
    Hallo,
    das Zauberwort heißt Subselect:
    [highlight=sql]
    update kisten a set
    a.Kistefrei = 'Ja'
    where a.Kisten-Nr in (
    select b.Kisten-Nr from inhalt b WHERE b.Vorgang = 'Ja'
    )
    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Originally posted by Falk Prüfer View Post
      Hallo,
      das Zauberwort heißt Subselect:
      [highlight=sql]
      update kisten a set
      a.Kistefrei = 'Ja'
      where a.Kisten-Nr in (
      select b.Kisten-Nr from inhalt b WHERE b.Vorgang = 'Ja'
      )
      [/highlight]

      Gruß Falk
      Vielen Dank für den Tip,

      aber noch eine Frage hab ich dazu:
      Was bedeutet das "a" bzw. "b" ?
      Was soll ich dafür setzen?

      Comment


      • #4
        Bingo - ich habs !!!!

        UPDATE kisten SET `KisteFrei`='Ja' WHERE `Kisten-Nr`IN (SELECT `Kisten-Nr` FROM inhalt WHERE `Vorgang` = 'Ja')

        Vielen Dank !!!!!!

        Comment


        • #5
          Originally posted by SimplyFred View Post
          Vielen Dank für den Tip,

          aber noch eine Frage hab ich dazu:
          Was bedeutet das "a" bzw. "b" ?
          a und b sind hier (nichtssagende) Tabellenaliase. Bei dieser Form des Subselects sind zwar keine Aliase notwendig, ich rate jedoch generell zur Verwendung, um bei gleichlautenden Feldnamen in unterschiedlichen Tabellen Verwechslungen auszuschließen.
          Originally posted by SimplyFred View Post
          Was soll ich dafür setzen?
          Du kannst es bei a und b belassen (um Schreibarbeit zu sparen) oder nimm etwas sprechenderes wie kisten und inhalt oder den Kompromiss kst und inh .

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X