Re: @Perlprofis - DB doppelte Einträge - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von olaf (59 Beiträge) am Donnerstag, 15.Januar.2004, 18:59.
    Re: @Perlprofis - DB doppelte Einträge

      moin horstees,

      es wird der hash $nr{$wasweissich} inkrementiert aber bevor er verwendet wird. würde da $nr{$wasweissich}++ stehen, wird er inkrementiert, nach dem er verwendet wurde.

      im christophs beispiel if ++$nr{$Feld}==2; wird also erst der hash um eins erhöht und dann mit 2 verglichen. würde da if $nr{$Feld}++==2; stehen, dann würde erst mit 2 verglichen und dann erst um eins erhöht.

      christoph war nur ein wenig schreibfaul ;-))).

      man hätte das auch so schreiben können:

      $nr{$Feld}++;
      if ($nr{$Feld}==2){
        push @ok, $Feld;
      }
      

      somit stehen dann in @ok alle felder die mehr als einmal vorkommen.

      gruß
      olaf


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Jürgen (614 Beiträge) am Mittwoch, 14.Januar.2004, 22:57.
    @Perlprofis - DB doppelte Einträge

      Hi BP-Freaks,

      seit langem mal wieder ein Prob. ;-)
      Ich möchte meine DB so auslesen, das nur doppelte Einträge
      angezeigt werden.
      Im Forum hab ich nur, wie man doppelte Einträge verhindert
      bzw. nicht angezeigt werden gefunden.
      Ich bräuchte das ganze in die andere Richtung ;-)
      Mir sollten nur Doppelte Einträge angezeigt werden.
      Wer hat einen Ansatz für mich ?
      Danke für die Tipps.

      Gruß
      Jürgen

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 14.Januar.2004, 23:34.
    Re: @Perlprofis - DB doppelte Einträge

      So:

      <loop db=... code=perl>
      push @ok, $Feld if ++$nr{$Feld}==2;
      </loop>
      <perl>
      foreach $Feld (keys %ok)
      {
        out "$Feld<br>";
      }
      </perl>
      

      Wenn Du Dir mehrere Felder merken willst, wirds n Tick komplizierter...

     Antworten

    Beitrag von horstees (229 Beiträge) am Donnerstag, 15.Januar.2004, 00:43.
    Re: @Perlprofis - DB doppelte Einträge

      Ich hatte mir dies hier ausgedacht:

      <perl>
      
       get "Id==*","Beispieladressen","alle";  $gesamt = $_amount_query;  while(get_next(alle))  {      get "Id>$_id Nachname==$Nachname","Beispieladressen","doppelte";       if($_amount_query>0){$_meine_doppelten{$Nachname} = 1;}            }

      out "Von $gesamt Namen sind doppelt oder mehrfach enthalten:<p>";

      while(($name,$ok) = each %_meine_doppelten)
      {
      out "$name<br>";
      }
      </perl>
      

      ;-) So Jürgen, jetzt mußt du dich entscheiden ;-)

      Tip:
      Ich würd Christoph's nehmen, is schließlich der Chef hier ;-)
      obwohl mir das mit der $nr zu kryptisch ist
      sieht's doch 'n bischen flotter aus ;-)


      horstees ;-)

     Antworten

    Beitrag von Jürgen (614 Beiträge) am Donnerstag, 15.Januar.2004, 02:00.
    Re: @Perlprofis - DB doppelte Einträge

      Hi!

      erst mal - ich war jetzt kurz 2 Std. ein, zwei Bierchen
      trinken um die Ecke in einem Bistro um den Kopf
      wieder frei zu bekommen ;-))
      Schon besser jetzt *ggg*

      Also, ich hab von Christoph sein kleines Script getestet.
      Hmm, Variable $Feld und DB mit meinen Angaben getauscht, aber mir wurde
      nichts aus gegeben ????????????????? Leere schöööööööööne Seite :-))
      Wo happerts den da ??? ;-)
      Bei horstees Script gab es keine Probs - funzt ;-)
      Besten Dank nochmal an euch beiden.

      Gruß
      Jürgen

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 15.Januar.2004, 03:13.
    Re: @Perlprofis - DB doppelte Einträge

      Äh, is auch fehlerhaft, muss

      foreach $Feld (@ok)
      

      statt

      foreach $Feld (keys %ok)
      

      sein... das sollte klappen...

      Äh, ja und es wäre besser dieses Skript hier zu nehmen, weil horstees seins die DB einmal komplett holt und dann jeden einzelnen Eintrag durchläuft und dabei wieder jeden einzelnen Eintrag holt - das is hart & bei einer gewissen Anzahl von Einträgen sehr lahm... ;-) Äh, horstess, vielleicht kannste Deins ja auch ändern ;-)

     Antworten

    Beitrag von horstees (229 Beiträge) am Donnerstag, 15.Januar.2004, 15:04.
    Re: @Perlprofis - DB doppelte Einträge

      > und dabei wieder jeden einzelnen Eintrag holt - das is hart & bei einer gewissen Anzahl von Einträgen sehr lahm... 
      


      hab ich mir schon gedacht...;-)

      > vielleicht kannste Deins ja auch ändern 
      

      is nur ne kleine Übungs-Db mit mini template..

      horstees

      ähm,PS: die wahre Bedeutung von ++$nr{$wasweissich} streckt sich mir noch nicht so ganz entgegen,
      was wird denn da jetzt eigentlich inkrementiert?

     Antworten

    Beitrag von olaf (59 Beiträge) am Donnerstag, 15.Januar.2004, 18:59.
    Re: @Perlprofis - DB doppelte Einträge

      moin horstees,

      es wird der hash $nr{$wasweissich} inkrementiert aber bevor er verwendet wird. würde da $nr{$wasweissich}++ stehen, wird er inkrementiert, nach dem er verwendet wurde.

      im christophs beispiel if ++$nr{$Feld}==2; wird also erst der hash um eins erhöht und dann mit 2 verglichen. würde da if $nr{$Feld}++==2; stehen, dann würde erst mit 2 verglichen und dann erst um eins erhöht.

      christoph war nur ein wenig schreibfaul ;-))).

      man hätte das auch so schreiben können:

      $nr{$Feld}++;
      if ($nr{$Feld}==2){
        push @ok, $Feld;
      }
      

      somit stehen dann in @ok alle felder die mehr als einmal vorkommen.

      gruß
      olaf

     Antworten

    Beitrag von horstees (229 Beiträge) am Donnerstag, 15.Januar.2004, 23:04.
    Re: @Perlprofis - DB doppelte Einträge

      moin moin,

      Inkrement ok
      Hash ok

      aber einen hash inkrementieren, häh?

      sah ich zum ersten mal...


      horstees

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 15.Januar.2004, 23:31.
    Re: @Perlprofis - DB doppelte Einträge

      Damit wird nich der Hash (%nr) inkrementiert, sondern der ausgewählte Eintrag des Hashes, also

      $nr{$Feld}
      

      Der hat ja irgendeinen Wert und wenns ne Zahl ist, wird die halt um eins erhöht. Anders geschrieben:

      $x=$nr{$Feld};
      $x=$x+1;
      $nr{$Feld}=$x;
      

      wäre dasselbe nur länger (und damit unübersichtlicher!) ;-)

      PS: Faulheit ist eine der 3 Tugenden des Programmierers (Die andern sind Selbstüberschätzung und Ungeduld) ;-)

     Antworten

    Beitrag von horstees (229 Beiträge) am Freitag, 16.Januar.2004, 13:26.
    Re: @Perlprofis - DB doppelte Einträge

      Mmh,
      meine 'Sperre' scheint behoben.

      Vor dem ersten Auftauchen von ++$nr{$Feld} wurde weder ein
      %nr Hash definiert, noch wurden dem key '$Feld' ein value zugewiesen.

      Und dann passiert alles auf einmal!

      Durch die Anwendung des Inkrement-Operators ++ WEISS perl, dass der bislang nicht definierte value:

      a) einen Zahlenwert annehmen muss
      b) diesen um eins erhöhen muss
      c) und diesen wiederum dem key namens $Feld des frisch gebackenen hash %nr
         zuweisen soll...
      

      So ungefähr hab ich mir's jetzt klar machen können,
      sicher nicht ganz druckreif formuliert
      und sicher immer noch an der 'wahren' Chronologie der Prozesse vorbei...

      horstees

     Antworten

    Beitrag von Sascha Fitzner (476 Beiträge) am Donnerstag, 15.Januar.2004, 16:07.
    Re: @Perlprofis - DB doppelte Einträge

      hallo jürgen

      ich denke du wirst

      a.) dazu selber programmieren müssen...

      b.) und dabei, die datenbank über das feld sortiert verarbeiten das du vergleichen möchtest. dabei musst du dann den aktuellen datensatz mit dem datensatz den du zuvor gelesen hast vergleichen. wenn beide datensätze gleich sind dann willst du eine verarbeitung. anschliessend merkst du dir den aktuellen datensatz und vergleichst diesen dann mit dem datensatz den du danach liest.

      gruss

      sascha fitzner

     Antworten


     
 Liste der Einträge von 32551 bis 32701:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!