Re: mehrfach vorkommende Datensätze anzeigen - 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 mk (966 Beiträge) am Montag, 16.Oktober.2006, 11:48.
    Re: mehrfach vorkommende Datensätze anzeigen

      Hallo,
      hört sich gut an, müßte auch mit einer DB gehen.
      Teste ich heut Abend.

      Michael


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von mk (966 Beiträge) am Dienstag, 26.September.2006, 08:22.
    mehrfach vorkommende Datensätze anzeigen

      Hallo,

      ich hab so einiges hier im Forum und in der BIB diesbezüglich gefunden,
      aber doch nicht das richtige.
      Ich muß mehere Datenbanken zusammenführen, dabei kommt es vor, dass Datensätze mehrfach dann da sind.
      Dies wollte ich denn manuell prüfen.
      Hiermit werden schon mal Datensätze angezeigt die doppelt sind:
      <perl>
      $dbname=vokabeln6;
      out <<EOF;
      <table border="1" >
        <tr>
          <td width="50">Nr</td>
          <td width="50">Thema</td>
          <td >Deutsch</td>
          <td >Englisch</td>
        </tr>
      EOF
      get "Id=* sort=English,Deutsch ", "$dbname";
      while(get_next("$dbname"))
      {
      $merke=$English ;# hier kann ich auch mehr Felder verknüpfen
      if ($merke_a eq $English)
      {
      out "<tr><td >$Id</td><td >$Thema</td><td ><b>$Deutsch";
      out "<font color='#0000FF'> |</font> $Deutsch2" if ($Deutsch2 ne "");
      out "<font color='#0000FF'> |</font> $Deutsch3" if ($Deutsch3 ne "");
      out "</b>";
      out " ($Deutsch_e)" if ($Deutsch_e ne "");
      out "</td><td ><b>$English</b>";
      out " ($English_e)" if ($English_e ne "");
      out "</td></tr>";
      }
      $merke_a=$merke ;
      }
      out "</table>";
      </perl>
      
      aber der 1. Datensatz ist dann nicht zu sehen.
      (Es geht hier ab und zu um mehere tausend Datensätze.)

      Gibt es da eine einfache Lösung?

      Michael

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 29.September.2006, 08:07.
    Re: mehrfach vorkommende Datensätze anzeigen

      Also so ganz hab ich nicht verstanden was Du machen willst, aber einen Test auf Mehrfach-Vorhandensein mach mal besser so:

      <perl>
      get "", $dbname;
      

      while(get_next)
      {
        out "$Feld bereits vorhanden!<br>" if $e{$Feld}++>0;
      }
      </perl>
      

      Das is alles (und schneller als obiger Code) ;-)

     Antworten

    Beitrag von mk (966 Beiträge) am Freitag, 29.September.2006, 09:00.
    Re: mehrfach vorkommende Datensätze anzeigen

      Hallo,

      so hätte ich es gern:

      wenn 2 Felder in einem anderen Datensatz genauso stehen, zeige beide Datensätze an, dann mit allen anderen Feldern, um zu sehen, ob ein Unterschied da ist.

      Michael

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 29.September.2006, 13:31.
    Re: mehrfach vorkommende Datensätze anzeigen

     Antworten

    Beitrag von mk (966 Beiträge) am Freitag, 29.September.2006, 17:27.
    Re: mehrfach vorkommende Datensätze anzeigen

      Hallo,

      ich habe nicht das Problem, dass ich die Doubletten nicht finde,
      das Beispiel aus der BIB hatte ich mir schon angeschaut,
      soweit ich es verstanden habe, prüft es beim neuanlegen.

      Michael

     Antworten

    Beitrag von mk (966 Beiträge) am Sonntag, 15.Oktober.2006, 19:37. WWW: vokabeltrainer-online.net
    Re: mehrfach vorkommende Datensätze anzeigen

      Hallo,

      es wird immer wichtiger, dass ich ne Lösung habe.

      nochmal, damit es nicht in Vergessenheit gerät:
      so hätte ich es gern:
      wenn 2 Felder in einem anderen Datensatz genauso stehen, zeige BEIDE (oder noch mehr) Datensätze an, dann mit allen anderen Feldern, um zu sehen, ob und wo ein Unterschied da ist.

      Michael

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 16.Oktober.2006, 10:19. WWW: posaunenchor-rhoden.de
    Re: mehrfach vorkommende Datensätze anzeigen

      Ich würde dazu mal den folgenden Ansatz vorschlagen:


      1. Datenbank kopieren und

      2. das Original gegen die Kopie auf Übereinstimmungen prüfen.

      Also, die eine per get und while durchlaufen lassen und bei jedem Datensatz nach übereinstimmenden Werten in der anderen Datenbank suchen.

      Bei Übereinstimmungen die gefundenen Datensätze direkt ausgeben oder markieren und später ausgeben. Die wirklich identischen Datensätze sollten dieselbe Id haben und könnten so von der Ausgabe ausgeschlossen werden, also:

      get Original
      

      while (get_next

      get Kopie wo (OriginalFeld1 == KopieFeld1 und OriginalFeld2 == KopieFeld2) und  OriginalId != KopieId
      while (get_next
      
      Ausgabe der Doubletten

     Antworten

    Beitrag von mk (966 Beiträge) am Montag, 16.Oktober.2006, 11:48.
    Re: mehrfach vorkommende Datensätze anzeigen

      Hallo,
      hört sich gut an, müßte auch mit einer DB gehen.
      Teste ich heut Abend.

      Michael

     Antworten

    Beitrag von mk (966 Beiträge) am Montag, 16.Oktober.2006, 15:35.
    Re: mehrfach vorkommende Datensätze anzeigen

      habs doch schon getestet,
      so:
      <perl>
      $dbname=vokabeln6;
      out <<EOF;
      <table border="1" >
        <tr>
          <td width="50">Nr</td>
          <td width="50">Thema</td>
          <td >Deutsch</td>
          <td >Englisch</td>
        </tr>
      EOF
      get "Deutsch~=Abfall sort=Deutsch,English ", "$dbname";#Eingegrenzt zum Test (Abfall ist doppelt)
      while(get_next("$dbname"))
      {
      $Deutsch_me=$Deutsch ;
      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      if ($_amount > 1 )
      {
      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      while(get_next("$dbname"))
      {
      out "<tr><td >$Id</td><td >$Thema</td><td ><b>$Deutsch";
      out "<font color='#0000FF'> |</font> $Deutsch2" if ($Deutsch2 ne "");
      out "<font color='#0000FF'> |</font> $Deutsch3" if ($Deutsch3 ne "");
      out "</b>";
      out " ($Deutsch_e)" if ($Deutsch_e ne "");
      out "</td><td ><b>$English</b>";
      out " ($English_e)" if ($English_e ne "");
      out "</td></tr>";
      }
      }
      }
      out "</table>";
      

      </perl>
      es läuft zu lange, hab es bevor es fertig war abgebrochen.
      Will den Server ja nicht lahm legen.
      Bei derzeit 2500 Datensätze ist dies wohl so nicht möglich.

      Michael

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 16.Oktober.2006, 15:59.
    Re: mehrfach vorkommende Datensätze anzeigen

      also das macht sozusagen das gleiche:
      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      if ($_amount > 1 )
      {
      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      while(get_next("$dbname"))
      

      holt 2 mal alle daten, also weg mit dem ersten, das brauchts nicht

      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      while(get_next("$dbname"))
      

      bp kommt auch durcheinander, wenn innerhalb einer whileschleife die gleiche db nochmal abgefragt wird, außer du arbeitest mit nem ergebnishash bei der ersten. wurde schon ganz oft bei mod und del im while get_next erörtert:
      also so muß es aussehen


      $dbname="vokabeln6";  ##!!!Strings ins "" schreiben
      out <<EOF;
      <table border="1" >
        <tr>
          <td width="50">Nr</td>
          <td width="50">Thema</td>
          <td >Deutsch</td>
          <td >Englisch</td>
        </tr>
      EOF
      get "Deutsch~=Abfall sort=Deutsch,English ", "$dbname","erg";#Eingegrenzt zum Test (Abfall ist doppelt)
      while(get_next("erg"))
      {
      $Deutsch_me=$Deutsch ;
      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      while(get_next("$dbname"))
      {
      out "<tr><td >$Id</td><td >$Thema</td><td ><b>$Deutsch";
      out "<font color='#0000FF'> |</font> $Deutsch2" if ($Deutsch2 ne "");
      out "<font color='#0000FF'> |</font> $Deutsch3" if ($Deutsch3 ne "");
      out "</b>";
      out " ($Deutsch_e)" if ($Deutsch_e ne "");
      out "</td><td ><b>$English</b>";
      out " ($English_e)" if ($English_e ne "");
      out "</td></tr>";
      }
      }
      out "</table>";
      

     Antworten

    Beitrag von mk (966 Beiträge) am Montag, 16.Oktober.2006, 16:10.
    Re: mehrfach vorkommende Datensätze anzeigen

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 16.Oktober.2006, 16:22.
    Re: mehrfach vorkommende Datensätze anzeigen

      na is ja klar, er kommt beim ersten doppelten an und sucht alle weiteren, dann kommt er irgendwann zum 2ten und sucht wieder alle weiteren. damit kommt auch eintrag 1 wieder auf den plan.

     Antworten

    Beitrag von mk (966 Beiträge) am Montag, 16.Oktober.2006, 18:49.
    Re: mehrfach vorkommende Datensätze anzeigen

      ok hab ich verstanden,
      jetzt hab ich wieder dei Datensätze die nur ein mal vokommen rausgefiltert und habe versucht mit^
      range=0,$Anzahl das Wiederholen zu unterbinden, es geht aber nicht.
      so sieht es kpl. aus:
      <perl>
      $dbname="vokabeln6"; ##!!!Strings ins "" schreiben
      out <<EOF;
      <table border="1" >
        <tr>
          <td width="50">Nr</td>
          <td width="50">Thema</td>
          <td >Deutsch</td>
          <td >Englisch</td>
        </tr>
      EOF
      get "Deutsch~=a sort=Deutsch,English ", "$dbname","erg";#Eingegrenzt zum Test
      while(get_next("erg"))
      {
      $Deutsch_me=$Deutsch ;
      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";#neu um vorher die Anzahl zu ermitteln
      $Anzahl=$_amount ;
      get "Deutsch==$Deutsch_me sort=Deutsch,English range=0,$Anzahl ", "$dbname";
      while(get_next("$dbname"))
      {
      if ($_amount > 1 )
      {
      out "<tr><td >$Id</td><td >$Thema2</td><td ><b>$Deutsch";
      out "<font color='#0000FF'> |</font> $Deutsch2" if ($Deutsch2 ne "");
      out "<font color='#0000FF'> |</font> $Deutsch3" if ($Deutsch3 ne "");
      out "</b>";
      out " ($Deutsch_e)" if ($Deutsch_e ne "");
      out "</td><td ><b>$English</b>";
      out " ($English_e)" if ($English_e ne "");
      out "</td></tr>";
      }
      }
      }
      out "</table>";
      </perl>
      

      noch ne Idee ???

      Michael

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 16.Oktober.2006, 19:10. WWW: posaunenchor-rhoden.de
    Re: mehrfach vorkommende Datensätze anzeigen

      Eine simple Möglichkeit dieses Problem zu lösen, wäre die Datensätze statt auszugeben, zunächst nur zu markieren und dann die markierten Datensätze ausgeben zu lassen. Doppelte gibts dann nicht, die Markierungen müßten allerdings vor jeder neuen Doublettensuche gelöscht werden.

     Antworten

    Beitrag von mk (966 Beiträge) am Dienstag, 17.Oktober.2006, 11:10.
    Re: mehrfach vorkommende Datensätze anzeigen - Lösung mit goto

      Hallo,

      für die Lösung habe ich ein "böses" Wort verwendet:
      @cb ich kenne deine meinung noch dazu, wußte mich nur nicht anders zu helfen
      

      <perl>
      $dbname="vokabeln6";
      out <<EOF;
      <table border="1" >
        <tr>
          <td width="50">Nr</td>
          <td width="50">Thema</td>
          <td >Deutsch</td>
          <td >Englisch</td>
        </tr>
      EOF
      

      get "Deutsch~=a sort=Deutsch,English ", "$dbname","erg";#Eingegrenzt zum Test
      while(get_next("erg"))
      {
      if ($Deutsch eq $Deutsch_me)
      {
      
      goto weiter;
      }

      $Deutsch_me=$Deutsch ;
      

      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      while(get_next("$dbname"))
      {
      

      if ($_amount > 1 )
      {
      out "<tr><td >$Id</td><td >$Thema2</td><td ><b>$Deutsch";
      out "<font color='#0000FF'> |</font> $Deutsch2" if ($Deutsch2 ne "");
      out "<font color='#0000FF'> |</font> $Deutsch3" if ($Deutsch3 ne "");
      out "</b>";
      out " ($Deutsch_e)" if ($Deutsch_e ne "");
      out "</td><td ><b>$English</b>";
      out " ($English_e)" if ($English_e ne "");
      out "</td></tr>";
      }
      }
      
      weiter:

      }
      out "</table>";
      </perl>
      

      Michael

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 17.Oktober.2006, 12:17.
    Re: mehrfach vorkommende Datensätze anzeigen - Lösung mit goto

      Echt, ich hab mal was Negatives über "goto" gesagt? ;-)

      Aber Du kannst eigentlich alles auch ohne goto machen in dem Fall:

      if ($Deutsch ne $Deutsch_me)
      {
      

      $Deutsch_me=$Deutsch ;

      get "Deutsch==$Deutsch_me sort=Deutsch,English ", "$dbname";
      while(get_next("$dbname"))
      {
      

      if ($_amount > 1 )
      {
      out "<tr><td >$Id</td><td >$Thema2</td><td ><b>$Deutsch";
      out "<font color='#0000FF'> |</font> $Deutsch2" if ($Deutsch2 ne "");
      out "<font color='#0000FF'> |</font> $Deutsch3" if ($Deutsch3 ne "");
      out "</b>";
      out " ($Deutsch_e)" if ($Deutsch_e ne "");
      out "</td><td ><b>$English</b>";
      out " ($English_e)" if ($English_e ne "");
      out "</td></tr>";
      }
      }
      }
      

      }

     Antworten

    Beitrag von mk (966 Beiträge) am Dienstag, 17.Oktober.2006, 18:00. WWW: vokabeltrainer-online.net
    Re: mehrfach vorkommende Datensätze anzeigen - Lösung mit goto

      Hallo,

      Danke an alle die geholfen haben, jetzt wo es fertig ist, frage ich mich warum bin ich nicht alleine drauf gekommen.

      Michael

     Antworten


     
 Liste der Einträge von 16501 bis 16651: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.08s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!