id's van tabel1 wegschrijven in tabel2
Ik heb 2 tabellen met in elk 100 records. De tabellen bevatten totaal verschillende records. Ik heb een veld met id's in tabel 1 die ik in een veld in tabel 2 wil schrijven. Nu is het zo dat de id's niet een opeenvolgende reeks van getallen zijn, er zitten soms gaten in de reeks.
Normaal loop ik zo alle records door:
while ($row = mysql_fetch_array($result))
{
$id = $rowrebus["id"];
}
Maar hoe zeg ik nu in deze loop dat ik het id weg wil schrijven in record 1 van tabel 2, en de volgende in record 2 van tabel 2... enz.
Ik kan dus niet met een tellertje werken. In VB is het mogelijk om een recordset.movenext te doen, maar deze functie kent mysql niet.
Wie weet raad?
Nicos schreef op 18.12.2009 23:16:
Waarom zou je dat willen?Maar hoe zeg ik nu in deze loop dat ik het id weg wil schrijven in record 1 van tabel 2, en de volgende in record 2 van tabel 2... enz.
Een id wordt enkel gebruikt om een record uniek aan te kunnen duiden (elk record heeft zijn eigen id). Het maakt dus ook niet uit of dat 1, 2, 200 of 932883 is, zolang het maar elke keer uniek is.
ps. Als je een opeenvolgende lijst wilt, kun je dat natuurlijk heel goed mbv PHP genereren. En als je het in HTML wilt weergeven, kun je zelfs een numbered list gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Ik wil geen lijst met opeenvolgende nummers. Ik wil de íd's uit de ene tabel naar de andere schrijven. In tabel 1 staan 100 deelnemers in tabel 2 staan de prijzen. Dus ik wil doormiddel van het id de prijzen uit delen.
In dat geval zou je alle id's uit tabel 1 kunnen selecteren. Terwijl je door deze resultaatset heel loopt laat je een teller meelopen die je na elke loop 1 ophoogt. Vervolgens koppel je het huidige id uit tabel 1 aan het id uit tabel 2 met dezelfde waarde als je tellertje heeft.
Dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// SELECT query met $result als resultaatset
$i = 1;
while($row = mysql_fetch_assoc($result)) {
$sql = "
UPDATE tabel2
SET winnaar = ".$row['id']."
WHERE prijs = ".$i."
";
// Query uitvoeren...
$i++;
}
?>
// SELECT query met $result als resultaatset
$i = 1;
while($row = mysql_fetch_assoc($result)) {
$sql = "
UPDATE tabel2
SET winnaar = ".$row['id']."
WHERE prijs = ".$i."
";
// Query uitvoeren...
$i++;
}
?>
Dat is nu net het probleem de prijzentabel hebben geen opeenvolgende id's.
Ik zat te denken om de id's van tabel 1 en tabel 2 in een array op te slaan. Vervolgens de array doorlopen om zo tabel 2 te vullen. Wil alleen nog niet echt lukken...
Gr.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// SELECT query op tabel1 om id's te selecteren
$aIds = array();
while($row = mysql_fetch_assoc($result)) {
$aIds[] = $row['id'];
}
// SELECT query op tabel 2 om prijzen te selecteren
$i = 0;
while($row = mysql_fetch_assoc($result)) {
$sql = "
UPDATE tabel2
SET winnaar = ".$aIds[$i]."
WHERE prijs = ".$row['prijs']."
";
// Query uitvoeren...
$i++;
}
?>
// SELECT query op tabel1 om id's te selecteren
$aIds = array();
while($row = mysql_fetch_assoc($result)) {
$aIds[] = $row['id'];
}
// SELECT query op tabel 2 om prijzen te selecteren
$i = 0;
while($row = mysql_fetch_assoc($result)) {
$sql = "
UPDATE tabel2
SET winnaar = ".$aIds[$i]."
WHERE prijs = ".$row['prijs']."
";
// Query uitvoeren...
$i++;
}
?>
Zo dan?