kann ich diese Queries zusammenfassen ?

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

  • kann ich diese Queries zusammenfassen ?

    Hallo Leute,

    ich zeig euch jetzt meinen Code, aber nicht lachen, ist ne Not Lösung...

    PHP-Code:

        $check1 
    $db_object->Execute
    ("SELECT ai_nr from t_aktion WHERE ai_user = '".$_POST['uname']."'");

        
    $aktion1 $check1->FetchRow();

        
    $check2 $db_object->Execute
    ("SELECT ai_nr from t_aktion WHERE ai_user = '".$_POST['uname']."' and ai_nr not like '".$aktion1['AI_NR']."'");

        
    $aktion2 $check2->FetchRow();

        
    $check3 $db_object->Execute
    ("SELECT ai_nr from t_aktion WHERE ai_user = '".$_POST['uname']."' and ai_nr not like '".$aktion1['AI_NR']."' and ai_nr not like '".$aktion2['AI_NR']."'");

        
    $aktion3 $check3->FetchRow(); 
    wusste mir nicht anders auszuhelfen als jede Reihe nochmals auszulesen und die vorherige auszuschliessen da ein user bis zu 3 Aktionen zugewiesen bekommen kann. Das Problem dabei ist das der User dann auch 3 mal angelegt ist mit dem gleichen Profil nur halt andere Aktionen...

    Vielleicht hat ja jemand ne idee zum zusammenfassen
    Zuletzt geändert von php-anfaenger; 16.07.2004, 06:58.
    -> It`s good to be bad! <-

    http://de.php.net
    http://php-faq.de
    http://www.schattenbaum.net
    http://www.dreamcodes.com

  • #2
    evtl. könnte man das mit Subselects zusammenfassen, da bin ich mir net ganz sicher, bzw. müßte nochmal länger drüber nachgrübeln, aber das wird ja eh erst ab MySQL 4.0 unterstützt.

    Würde Dir vielleicht ein
    PHP-Code:
    select DISTINCT... 
    helfen? Damit bekommst ja alle unterschiedlichen ai_nr zu einem Usernamen (bzw. jede vorhandene ai_nr zu dem Usernamen einmal), die unterschiedlich sind. Und wenn ich Deine Statements richtig verstehe, willst Du ja bloß 3 verschiedene ai_nr zu einem User selektieren, oder?

    Gruß P2

    Kommentar


    • #3
      Ja, ansich schon nur 1 User aber dennoch 3 mal in der DB vorhanden.
      Also pro ai_nr ein User.

      Ungefähr so:

      User12345 User12345 User12345
      PW PW PW
      1001 1002 1003


      Die 100x Nummer wäre die Aktion.
      So sieht das dann in der DB aus.
      -> It`s good to be bad! <-

      http://de.php.net
      http://php-faq.de
      http://www.schattenbaum.net
      http://www.dreamcodes.com

      Kommentar


      • #4
        mit der 1. Abfrage hast du schon alle 3 ai_nr, weisst du das?

        dein DB-Design ist besch*ssen

        mach 3 Tabellen draus:
        - tbl_user: lg_id, str_logon_name, str_lastname, ....
        - tbl_action: lg_id, str_action
        - tbl_user_action: lg_id, lg_userid, lg_action_id
        dann mit join arbeiten.
        Sowas nennt man Normalisierung

        Kommentar


        • #5
          Das ist mir klar, nur kann ich die DB nicht einfach umstrukturieren.
          Das bedarf sozusagen unterschrift von ganz oben... ergo muss ich leider
          mit dem Arbeiten was ich bekomme
          -> It`s good to be bad! <-

          http://de.php.net
          http://php-faq.de
          http://www.schattenbaum.net
          http://www.dreamcodes.com

          Kommentar


          • #6
            Wie asp2php schon sagte das erste Query hat schon alle...:
            $check1 = $db_object->Execute("SELECT ai_nr from t_aktion WHERE ai_user = '".$_POST['uname']."'");

            $aktion1 = $check1->FetchRow();
            $aktion2 = ab hier jetzt evt mit in_array() arbeiten
            $aktion3 = dito
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Also hab mir gerade mal die Funktion in_array() angeschaut,
              aber die gibt mir ja nur True or False zurück.
              Hier wären ja nur z.B. 3 werte die nacheinander angezeigt werden müssen.
              Ich dachte vielleicht wäre das irgendwie so möglich:

              PHP-Code:

              $check1 
              $db_object->Execute("SELECT ai_nr, ai_name from t_aktion
              WHERE ai_autohaus = '"
              .$_POST['uname']."'");

                  
              $aktion1 $check1->FetchRow();

              und dann die werte irgendwie so raus bekommen...

              $aktion1[ai_nr1]
              $aktion1[ai_nr2]
              $aktion1[ai_nr3
              Weil eigentlich wie Ihr auch schon sagt hat er ja schon alle drei nummern
              die ich brauche...
              Mein SQL Manager gibt mir ja auch 3 zurück... grml
              -> It`s good to be bad! <-

              http://de.php.net
              http://php-faq.de
              http://www.schattenbaum.net
              http://www.dreamcodes.com

              Kommentar


              • #8
                Juhu, habs hibekommen und zwar so:

                PHP-Code:

                $check1 
                $db_object->Execute("SELECT ai_nr, ai_name from t_aktion
                WHERE ai_user = '"
                .$_POST['uname']."'");

                if (
                $check1
                        while (
                $aktion $check1->FetchRow()) { 
                            echo 
                "<tr><td><font face=\"verdana\" size=\"2\">
                $aktion[AI_NAME]</font></td> <td>
                <font face=\"verdana\" size=\"2\">
                <a href=\"showdata.php?aktion=
                $aktion[AI_NR]\">
                $aktion[AI_NR]</a></font></td></tr>";   
                        } 
                Das kann manchmal so einfach sein, aber man wählt trotzdem immer den falschen weg

                Danke Jungs für die Hilfe !
                -> It`s good to be bad! <-

                http://de.php.net
                http://php-faq.de
                http://www.schattenbaum.net
                http://www.dreamcodes.com

                Kommentar

                Lädt...
                X