Anzeige:
Ergebnis 1 bis 13 von 13

Thema: SQL: Zeilen zählen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    10.06.2003
    Beiträge
    19

    SQL: Zeilen zählen

    Hi miteinander,

    Ich suche den SQL-Befehl um bei einer Oracle 9 Datenbank die Zeilen abzuzählen, weil ich dort leider kein AUTO_INCREMENT habe.

    Der Befehl wird in einer Schleife ausgeführt und $counter wird immer um eins erhöht. Insgesamt passiert dies ca. 160'000 mal.

    Das ganze sieht so aus:

    Code:
    SELECT VARIABLE WHERE ***BEFEHL*** = '$counter'
    Habt ihr eine Idee, wie ich das machen könnte?

    Danke,

    bionic

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    hab zwar keine ahnung was du genau willst bzw was dein select statement machen soll, aber ...

    die anzahl der rows in der tabelle erhältst du so:
    Code:
    select count(*) from tabelle;
    anzahl der rows die eine bedingung erfüllen:
    Code:
    select count(*) from tabelle where spalte1=123;

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.06.2003
    Beiträge
    19
    Danke für deine Antwort!

    Mit COUNT(*) habe ich es auch bereits versucht... Ohne Erfolg.

    Hier ist mein Code:
    Code:
    my $counter = "0";
    while ($counter <= "159071")
    { 
    	my $sql= "SELECT WERT1 FROM TBL_1 WHERE ***BEFEHL für ZEILENNUMMER*** = '$counter' ";
    	my $sth = $dbh->prepare($sql) or die $dbh->errstr();
    	$sth->execute or die $dbh->errstr();
    	my $ursprungscode = $sth->fetchrow();
    	
    	my $sql= "SELECT WERT1 FROM TBL_2 WHERE WERT1 = '$ursprungscode' ";
    	my $sth = $dbh->prepare($sql) or die $dbh->errstr();
    	my $targetcode = $sth->execute or die $dbh->errstr();
    	my $targetcode = $sth->fetchrow();
    	
    	if ($ursprungscode ne $targetcode){
    		print $ursprungscode;
    		print "<br />";
     	  $counter++;
    	}
    }
    Das gute Ding soll eigentlich nur die beiden Werte vergleichen und falls etwas nicht stimmt, soll $ursprungscode ausgegeben werden.

  4. #4
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    kannst du bitte in worten erklären was das ganze soll. willst du für die ersten 159071 rows von tabelle 1 prüfen ob der selbe wert auch in tabelle 2 vorhanden ist??? wenn ja dann kann man das auch mit einem (=1) sql statement machen statt mit 2x159071 queries

  5. #5
    Registrierter Benutzer
    Registriert seit
    10.06.2003
    Beiträge
    19
    Exakt das möchte ich machen.

    Ich bin Anfänger auf dem Gebiet, eigentlich kann ich weder Perl noch SQL, deshalb bitte ich um ein bisschen Nachsicht, falls der Code "komisch" aussieht. ;-)

    Wie würdest du dies in ein einziges SQL Statement packen?

    Vielen Dank!

  6. #6
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    hast du denn keinen key in deinen tabellen der gleich ist???
    bitte suche mal nach einem guten sql-howto und lies darin die kapitel über joins
    dann brauchst du noch wissen über gute datenbank strukturen (entity relationship diagramme sind dafür von nutzen)

    greetz

  7. #7
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    alle werte aus tabelle1 selektieren die nicht in tabelle2 enthalten sind:
    Code:
    SELECT WERT1 FROM TBL_1 t1
      WHERE not exists (SELECT null FROM TBL_2 t2 WHERE t2.WERT1 = t1.wert1);
    noch eine frage: willst du alle rows prüfen oder 159071 beliebige oder ... ?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •