[MySQL] Niet bestaand record overslaan...

Pagina: 1
Acties:

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Ok dit zal best vreemd klinken.

Ik heb een tabel waarin een id veld niet volledig oploopt: dus dan heb je id 1,2,4,5,6,8 enz en niet 1,2,3,4,5,6,7,8.

Ik heb dus in een while een tellertje lopen die tot de 1000 gaat en die word elke keer opgehoogd met 1. Echter komt die dus ook bij die id nummers die er dus niet zijn. Hoe kan ik die niet bestaande id's overslaan?

Ik heb het al geprobeerd met een if en een break maar ik kan dus niet iets vergelijken wat er niet is.

Hoe doe ik dit dus?

"I don't take life too seriously, no one gets out alive anyways..."


  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
Waarom vraag je niet al die records op volgorde op in een recordset en loop je de recordset door? Dan heb je niet eens een handmatige teller nodig.

Verwijderd

Kan je niet in je loop iets opnemen dat er wordt gekeken of de rij bestaat?
Zoiets dus

for ...
if (exists rij)
{

}
next

Verwijderd

mysql's auto-increment recyled inderdaad niet de rowID's van van verwijderde records. select * from table order by rowID en daarna steeds een rijtje ervan af pellen lijkt me zowiezo de beste oplossing.

desnoods: select * from table where rowID < 1000 ORDER BY rowID

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
mzzz dat exist zou wel handig zijn alleen het bestaat niet eens in mysql en in php wil die het ook niet echt doen...

"I don't take life too seriously, no one gets out alive anyways..."


  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
Misschien is het ook handig als je ook even vertelt waarom onze andere ideeen niet werken/kunnen???

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
recordset id> niks gevonden in mysql docu, mij lijkt dat als er een id bij komt dat ik de recordset ook moet updaten, te omslachtig
exist> werkt gewoon niet want er is geen exist functie
dat order by> hiermee verhelp ik nog niet de gaten

"I don't take life too seriously, no one gets out alive anyways..."


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Waarom WIL je de gaten verhelpen.. Waarvoor heb je het strikt opvolgend zijn van je id's nu werkelijk NODIG?

De eis die je aan je id's stelt is (zoals oa ook hier al uit veel topics naar voren is gekomen) alleen maar erg lastig. Er zijn legio oplossingen die hier niet van afhankelijk zijn en deze zijn vaak ook veel makkelijker te implementeren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Op woensdag 03 juli 2002 15:54 schreef Janoz het volgende:
Waarom WIL je de gaten verhelpen.. Waarvoor heb je het strikt opvolgend zijn van je id's nu werkelijk NODIG?

De eis die je aan je id's stelt is (zoals oa ook hier al uit veel topics naar voren is gekomen) alleen maar erg lastig. Er zijn legio oplossingen die hier niet van afhankelijk zijn en deze zijn vaak ook veel makkelijker te implementeren.
Ik wil de gaten niet verhelpen, ik wil ze omzeilen. Ik wil dus gewoon naar een volgend recoprd mbv een teller. Dit gaat dus echter niet omdat die teller ook waarden aanneemt van die id die er dus niet zijn.

Het is trouwens zo dat ik hem niet kan herontwerpen zeg maar, de tabel is zoals ie is en daar kan ik niets aan veranderen.

"I don't take life too seriously, no one gets out alive anyways..."


  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
Misschien kun je je code even posten?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:52

Creepy

Tactical Espionage Splatterer

Op woensdag 03 juli 2002 15:58 schreef siggy het volgende:

[..]

Ik wil de gaten niet verhelpen, ik wil ze omzeilen. Ik wil dus gewoon naar een volgend recoprd mbv een teller. Dit gaat dus echter niet omdat die teller ook waarden aanneemt van die id die er dus niet zijn.

Het is trouwens zo dat ik hem niet kan herontwerpen zeg maar, de tabel is zoals ie is en daar kan ik niets aan veranderen.
Waarom met een teller??
Je kan toch ook met een query alle id's ophalen, en het resultaat van de query dan gebruiken om langs alle id's heen te gaan?

Er zijn hier op GoT en op PHP.net legio voorbeelden te vinden van een select query, die daarna compleet wordt doorlopen, ZONDER afhankelijk te zijn van de teller, en toch het ID kan gebruiken.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
vooruit dan maar:
PHP:
1
<?while( $driverid < 705){ $result_driver = mysql_query("select driverid, vnaam, tnaam, anaam from drivers where driverid=$driverid");$result  = mysql_query("select count(res_rac_id) from results_gpl_core where res_per_id=$driverid and res_race_pos=1");$result2 = mysql_query("select count(res_qual_pos) from results_gpl_core where res_per_id=$driverid and res_qual_pos=1");$result3 = mysql_query("select count(res_fastlap_pos) from results_gpl_core where res_per_id=$driverid and res_fastlap_pos=1");if (!$result_driver) die("<center>Fout bij het uitvoeren van de 1e query<center>");while ($rij = mysql_fetch_array($result_driver)){  echo "<tr align=\"left\">" ; echo "<td>" . $rij["driverid"] . "<td>" . $rij["vnaam"] . " " . $rij["tnaam"] . " " . $rij["anaam"]; }if (!$result) die("<center>Fout bij het uitvoeren van de 1e query<center>");while ($rij = mysql_fetch_array($result)){ echo "<td>" . $points_wins = $rij["count(res_rac_id)"]; $points_wins = $points_wins * 10;}if (!$result2) die("<center>Fout bij het uitvoeren van de 2e query<center>");while ($rij = mysql_fetch_array($result2)){  echo "<td>" . $points_poles = $rij["count(res_qual_pos)"]; $points_poles = $points_poles * 2; }if (!$result3) die("<center>Fout bij het uitvoeren van de 3e query<center>");while ($rij = mysql_fetch_array($result3)){ echo "<td>" . $points_fastestlaps=$rij["count(res_fastlap_pos)"]; $points_fastestlaps = $points_fastestlaps * 1; $points = $points_wins + $points_poles + $points_fastestlaps; echo "<td>" . $points; echo "</tr>" ;}$driverid++; }?>

Dit is de code zoals ie werkt, maar zo krijg ik ook nog eens allemaal nulletjes doordat de driverid niet gelijk is aan de driverid in de tabel.

"I don't take life too seriously, no one gets out alive anyways..."


  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Op woensdag 03 juli 2002 16:03 schreef Creepy het volgende:

[..]

Waarom met een teller??
Je kan toch ook met een query alle id's ophalen, en het resultaat van de query dan gebruiken om langs alle id's heen te gaan?

Er zijn hier op GoT en op PHP.net legio voorbeelden te vinden van een select query, die daarna compleet wordt doorlopen, ZONDER afhankelijk te zijn van de teller, en toch het ID kan gebruiken.
mzzz die wist ik nog niet, zal er ff op searchen

"I don't take life too seriously, no one gets out alive anyways..."


  • Helox-in-a-box
  • Registratie: Augustus 2000
  • Laatst online: 21:03
gebruik maken van foreign keys

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Het volgende ID kun je bijvoorbeeld ophalen met:

SELECT MIN(id) FROM table WHERE ID > CurrentID

vorige met:

SELECT MAX(id) FROM table WHERE ID < CurrentID

Niks nodig met teller oid

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
PHP:
1
<?$result_driver = mysql_query("select driverid, vnaam, tnaam, anaam from drivers where driverid < 705");while ($rij = mysql_fetch_array($result_driver)) {  $driverid = $rij["driverid"];  $result  = mysql_query("select count(res_rac_id) from results_gpl_core where res_per_id=$driverid and res_race_pos=1");  $result2 = mysql_query("select count(res_qual_pos) from results_gpl_core where res_per_id=$driverid and res_qual_pos=1");  $result3 = mysql_query("select count(res_fastlap_pos) from results_gpl_core where res_per_id=$driverid and res_fastlap_pos=1"); //enz enz}?>

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Op woensdag 03 juli 2002 16:10 schreef Vigory het volgende:
PHP:
1
<??>
mzzzz hij skipped het eerste record nu om de een of andere vage reden en hij werkt niks af. Maar dat kan ik zelf wel verhelpen, hoop ik..

dank allen!

"I don't take life too seriously, no one gets out alive anyways..."


  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
oeps.

"I don't take life too seriously, no one gets out alive anyways..."

Pagina: 1