tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
305
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    380
    hallo, ich möchte gerne bei einem UPDATE-Befehl einen Wert ändern. Das Problem ist, das ich durch das Programm nur zwei Werte bekomme, was dazu führt, das ich über drei Tabellen gehen muss. Klar könnte ich jetzt in meinen Programm 4 Abfragen schreiben. Würde dies aber gerne mit einer lösen

    ich schildere erstmal die Tabellen mit einen Beispielwert:

    Tabel User
    user id | username | usertype
    68 | max.muster | Manager

    Tabel JCAA
    id | value
    16 | 68

    Tabel JCAGAM
    group_id | aro_id
    23 | 16

    Table group
    id | value
    23| Manager

    Als übergaben bekomme ich den username (hier max.muster) und das Level(bsp.: Administrator). Ich muss daher in der Tabelle User den usertype ändern, was kein Problem ist. Problematisch wird es eher in der Tabelle JCAGAM. Ich müsste theoretisch einen joint im Set und in der Wherebedingung machen.

    Aber so richtig komme ich nicht auf dem nenner, wie ich die Tabelle am besten ändere

    Gruß
     
    Ich bin keine Signatur! - Auch wenn`s so aussieht :) - Wirklich!

    Über ein Danke freut sich jeder

  2. #2
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Ich verstehe den Zusammenhang der Tabellen noch nicht so ganz.

    Wenn du Max Muster vom "Manager" zum "Administrator" änderst, warum muss dann in der Tabelle "JCAGAM" überhaupt was geändert werden?
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #3
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    380
    die group_id der JCAGAM weißt auf die Tabelle group. Dort sind alle Level nochmal seperat gelistet. Ich muss da auch auf Admin umstellen, sonst geht garnichts. Ich finde es auch schwachsinnig, doch muss ich damit Leben.

    Der Lange weg würde etwa so gehen (ungetestet):
    PHP-Code:
    $id mysql_query("SELECT id FROM JCAA INNER JOIN Users ON JCAA.value=Users.id WHERE username = may.muser")

    $level mysql_query("SELECT id FROM group WHERE value=Administrator")

    mysql_query("UPDATE JCAGAM INNER JOIN JCAA ON JCAGAM.aro_id=JCAA.id SET group_id=".$level." Where aro_id=".$id
    Aus den drei Abfragen versuche ich eine zu machen.
     
    Ich bin keine Signatur! - Auch wenn`s so aussieht :) - Wirklich!

    Über ein Danke freut sich jeder

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    UPDATE
        JCAGAM
    SET 
        JCAGAM.group_id = (
                SELECT id 
                FROM GROUP 
                WHERE VALUE=Administrator)
    WHERE
        JCAGAM.aro_id = (
                SELECT id 
                FROM JCAA 
                INNER JOIN Users ON JCAA.VALUE=Users.id 
                WHERE username = may.muser)

    Könnte gehen...
    Kalito bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    380
    Hab es hinbekommen

    Man musste in der WHERE-Bedingung die id bei Select genau definieren.

    Danke

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    UPDATE
        JCAGAM
    SET 
        JCAGAM.group_id = (
                SELECT id 
                FROM GROUP 
                WHERE VALUE=Administrator)
    WHERE
        JCAGAM.aro_id = (
                SELECT JCAA.id 
                FROM JCAA 
                INNER JOIN Users ON JCAA.VALUE=Users.id 
                WHERE username = 'may.muser')
    Geändert von Kalito (10.11.11 um 19:42 Uhr)
     
    Ich bin keine Signatur! - Auch wenn`s so aussieht :) - Wirklich!

    Über ein Danke freut sich jeder

Ähnliche Themen

  1. Komplizierte Abfrage
    Von webdream im Forum PHP
    Antworten: 0
    Letzter Beitrag: 13.12.07, 08:31
  2. Komplizierte(?) Abfrage
    Von xcylo im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 20.06.07, 09:56
  3. Komplizierte(?) SQL-Abfrage
    Von teinze im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 20.09.06, 16:40
  4. Komplizierte Abfrage?!
    Von Eiszwerg im Forum PHP
    Antworten: 2
    Letzter Beitrag: 12.12.05, 22:36
  5. Komplizierte SQL Abfrage
    Von Fredth im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 27.02.05, 00:14