Probleme mit UPDATE und INNER JOIN

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit UPDATE und INNER JOIN

    Hallo, ich lese mit folgenden Zeilen ein paar Werte aus 2 Tabellen aus, darunter auch einen Wert namens "Kontingent".

    PHP-Code:
    $query2="SELECT hc_prices.name, hc_prices.preis, hc_prices.kontingent from hc_dates INNER JOIN hc_did_pid on hc_dates.DID=hc_did_pid.DID INNER JOIN hc_prices ON hc_did_pid.PID=hc_prices.PID where hc_did_pid.DID=$chef"
    Wenn ich jetzt diesen Wert für Kontingent um genau 1 runter setzen will in einem UPDATE befehl krieg ich das irgendwie nicht gebacken.

    Weiß jemand von euch weiter ?

    Vielen Dank

  • #2
    lass dir die id des datensatzes vom SELECT zurückliefern, das erleichtert die sache (falls noch noicht geschehen)

    das UPDATE-statement wäre u. U. interessant
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      PHP-Code:
      $query3="UPDATE hc_prices SET kontingent=$kontingent-1 where PID=$PID"
      habe es jetzt so gelöst, dafür ist aber notwendig dass ich vorher mit einem select dievariable $kontingent und die varibale $PID auslese.

      wenn jemand eine ahnung hat wie ich das auch anders hinbekomm, also über die oben geposteten inner joins, bitte melden !

      danke !

      Kommentar


      • #4
        mit joins geht das (noch) nicht, das kommt erst in zukünftien mysql-versionen (wenn überhaupt)

        aber du kannst
        Code:
        UPDATE hc_prices 
        SET kontingent=kontingent-1 
        WHERE PID=$PID
        machen, dann musst du nur eine variable auslesen (bei mehreren PIDs erst alle auslesen, in nem array speichern und dann mit IN arbeiten)
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          danke, gut zu wissen !

          vielleicht kannst du mir auch noch damit helfen, hab mir grad so einiges zu joins durchegelesen aber das sind ja recht komplizierte freunde.

          würde gerne folgendes beispiel auf einen select minimieren, habs bisher nur hinbekommen dass es mit 2 funktioniert:

          PHP-Code:
          $query5="SELECT hc_concerts.name, hc_dates.datum from hc_dates INNER JOIN hc_id_did on hc_dates.DID=hc_id_did.DID INNER JOIN hc_concerts ON hc_id_did.ID=hc_concerts.ID";
          $result5 mysql_query($query5) or die ("Error in query: $query. " mysql_error()); 
          $query6="SELECT hc_locations.name as location from hc_dates INNER JOIN hc_did_lid on hc_dates.DID=hc_did_lid.DID INNER JOIN hc_locations ON hc_did_lid.LID=hc_locations.LID"
          $result6 mysql_query($query6) or die ("Error in query: $query. " mysql_error());

          while(
          $row5 mysql_fetch_object($result5) and $row6 mysql_fetch_object($result6)) 
          {
           echo 
          $row5->name.", ".$row5->datum.", ".$row6->location."<br>\n";

          wahrscheinlich ist dieser code großer mist, habs grad mal so zum ausprobieren erstellt und funktioniert auch, aber in einem select wäre es wesentlich einfacher zu handhaben.

          Kommentar


          • #6
            probier mal
            Code:
            SELECT 
              loc.name location,
              c.name, 
              d.datum
            FROM 
              hc_dates d
              INNER JOIN hc_did_lid l ON d.DID=l.DID 
                INNER JOIN hc_locations loc ON l.LID=hc_loc.LID
                INNER JOIN hc_concerts c ON l.ID=c.ID
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Original geschrieben von mrhappiness
              probier mal
              Code:
              SELECT 
                loc.name location,
                c.name, 
                d.datum
              FROM 
                hc_dates d
                INNER JOIN hc_did_lid l ON d.DID=l.DID 
                  INNER JOIN hc_locations loc ON l.LID=hc_loc.LID
                  INNER JOIN hc_concerts c ON l.ID=c.ID

              in der vorletzten zeile muss glaub ich das hc_ vor loc weg, aber es funktioniert trotzdem noch nicht,
              denn in l (also hc_did_lid) gibt es kein ID, sondern nur DID und LID.
              ID ist dafür aber in der tabelle hc_ID_DID vorhanden,
              womit ich diesen join irgendwie verknüpfen muss, oder ?
              Zuletzt geändert von muc; 24.11.2003, 20:20.

              Kommentar


              • #8
                PHP-Code:
                SELECT
                  loc
                .name location,
                  
                c.name,
                  
                d.datum
                FROM
                  hc_dates d
                  INNER JOIN hc_did_lid l ON d
                .DID=l.DID
                    INNER JOIN hc_locations loc ON l
                .LID=loc.LID
                    INNER JOIN hc_id_did i ON d
                .DID=i.DID
                    INNER JOIN hc_concerts c ON i
                .ID=c.ID 
                wahnsinn ! so funktionierts !

                vielen dank für die hilfe !

                Kommentar


                • #9
                  fein
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar

                  Lädt...
                  X