Joins in Bedingung zueinander ausführen ?

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

  • Joins in Bedingung zueinander ausführen ?

    Hi !!!
    Ich habe ein script, in dem ich Daten aus einer Tabelle abfrage und dann mit einer anderen tabelle (login) anhand der user_id verknüpfe.
    Wenn in der Tabelle login kein datenssatz mit einer entsprechenden user_id verfügbar ist, möchte ich, daß er in einer anderen Tabelle (gelöschtebenutzer) nachforscht.

    Bisher realisiere ich das so:

    PHP-Code:
    $temp2="SELECT *, login.benutzer FROM gbuch ";
    $temp2.="LEFT JOIN login ";
    $temp2.="ON absender = user_id ";
    $temp2.="WHERE empfaenger='".$_GET['var2']."' ";
    $temp2.="ORDER BY zeit DESC ";
    $temp2.="LIMIT ".$_GET['limit1'].", 10";
    $abfrage=mysql_query($temp2) or die (mysql_error());
    while(
    $rowgb mysql_fetch_object($abfrage)){
        
    $inhalttemp=    $rowgb->inhalt;
        
    $zeittemp=    $rowgb->zeitpunkt;
        
    $absendertemp=    $rowgb->absender;
        
    $gbid=        $rowgb->gbuch_id;
        
    $benutzer=    $rowgb->benutzer;
        if (
    $benutzer=="") {
            
    $temp5="SELECT * FROM loeschen WHERE user_id = '".$absendertemp."'";
            
    $abfrage5=mysql_query($temp5);
            
    $benutzertemp=mysql_fetch_array($abfrage5);
            
    $benutzer=$benutzertemp['benutzer'];
        }

    Nun macht er aber pro Zeile eine neue SQL-Abfrage - kann ich das nicht eleganter per irgendeinem JOIN in mein erstes SQL-Statement einbauen ?
    Zuletzt geändert von DaGuertliz; 25.02.2004, 10:00.
    Yeah !

  • #2
    warum machst du in deiner benutzertabelle (login?) nicht einfach ein flag 'gelöscht' rein?

    dann kannst du das mit nur einer query machen, die 2. tabelle sparen und beim löschen nur das flag ändern.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      warum machst du in deiner benutzertabelle (login?) nicht einfach ein flag 'gelöscht' rein?
      Ich speichere in der Benutzertabelle (login) ganz andere Daten (anmeldedatum usw) als in der Tabelle mit den gelöschten Benutzern (loeschen - loeschdatum usw.) - eben abgesehen von user_id und benutzername.

      Und da ja der heilige Normalisierer sagt, man soll keine redundanten datensätze anlegen, lösche ich einen Nutzer aus der login-tabelle, wenn er sich aus meiner community verabschiedet ...
      Yeah !

      Kommentar


      • #4
        hast du denn dann redundante daten?

        Ob gelöscht oder nicht ist für mich ein Attribut für einen Benutzer, aknn also durchaus in die Benutzertabelle


        du kanst ja auch ne spalte deleted vom typ datetime anlegen, bei nem gelöschten benutzer schreibst du da das löschdatum rein, bei allen anderen benutzern steht NULL drin
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          du kanst ja auch ne spalte deleted vom typ datetime anlegen, bei nem gelöschten benutzer schreibst du da das löschdatum rein, bei allen anderen benutzern steht NULL drin
          Das allerdings wäre eine Alternative ;-)

          Ich hatte eigentlich mein 2 Tabellen-Modell damals so konzipiert, weil ich dachte, die Laufzeiten der DB würden sich verkürzen, wenn nicht mehr benötigte Nutzer aus der tabelle "login" gelöscht würden.
          Das Gästebuch ist in der Tat neben dem Forum die einzige Seite, in der ich nochmal auf die gelöschten Nutzer zurückgreife, damit dem interessierten Nutzer angezeigt wird, daß sich der Nutzer, dessen Profil er gerne angesehen hätte inzwischen gelöscht hat - mit der angabe, wann er sich gelöscht hat ....
          Auf die Tabelle login greife ich indes per inner join auf beinahe jeder anderen Seite zu ...
          Yeah !

          Kommentar

          Lädt...
          X