1 Veld in query resultaat updaten naar numeriek volgorde.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frank Baltus

Frank Baltus

08/08/2012 20:46:31
Quote Anchor link
Dames, Heren,

Ik wil een veld updaten met een nummerieke waarde, maar dan oplopend van 1 tot aan het laatste record van de query. Dus als er in de selectie query 110 records zijn 1 veld updaten van 1 tot en met 110.
Ik heb op internet gezocht naar mogelijkheden, maar kom er niet zo snel achter. In VB bestaat de opdracht Set rs = QD.OpenRecordset(dbOpenForwardOnly) maar die kan ik in PHP niet vinden.
is er een mogelijkheid om bij het eerste record te beginnen en dan door het query resultaat te lopen tot het laatste record en dan ieder record 1 veld updaten?

Frank
 
PHP hulp

PHP hulp

22/12/2024 06:47:59
 
Erwin H

Erwin H

09/08/2012 08:37:56
Quote Anchor link
Ik neem aan dat je met php eigenlijk MySQL bedoelt? Als je het namelijk in 1 query wilt doen dan moet je het in de query zelf zoeken.

Als ik je vraag goed begrijp dan kan je het met user defined variables doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SET @pos = 0;
UPDATE tabel_name SET update_field = ( @pos := @pos + 1 ) ORDER BY order_field ASC;
 
Frank Baltus

Frank Baltus

09/08/2012 13:20:31
Quote Anchor link
Ik had eigenlijk meer zoiets als dit in gedachte:

Quote:
mysql_select_db($database_kleinvee, $kleinvee);
$query_rsKooinummers = "SELECT
tbl_inschrijvingen.Iid,
tbl_inschrijvingen.TTid,
tbl_ras.sorteervolg,
tbl_kleuren.Volgnummer,
tbl_geslacht.Geslacht,
tbl_leeftijd.Leeftijd,
tbl_inschrijvingen.Kooinummer
FROM
((((tbl_inschrijvingen
INNER JOIN tbl_inzenders
ON
tbl_inschrijvingen.Uid = tbl_inzenders.Uid)
INNER JOIN
tbl_geslacht
ON
tbl_inschrijvingen.Gid = tbl_geslacht.Gid)
INNER JOIN
tbl_kleuren
ON
tbl_inschrijvingen.Kid = tbl_kleuren.Kid)
INNER JOIN tbl_leeftijd
ON
tbl_inschrijvingen.Lid = tbl_leeftijd.Lid)
INNER JOIN
tbl_ras
ON
(tbl_inschrijvingen.Rid = tbl_ras.Rid)
AND
(tbl_kleuren.Kid = tbl_ras.Kid)
WHERE
(((tbl_inschrijvingen.TTid) = '$tent'))
ORDER BY tbl_inschrijvingen.Iid
DESC ,
tbl_ras.sorteervolg ,
tbl_kleuren.Volgnummer ,
tbl_geslacht.Geslacht ,
tbl_leeftijd.Leeftijd
DESC;";
$rsKooinummers = mysql_query($query_rsKooinummers, $kleinvee) or die(mysql_error());
$totalRows_rsKooinummers = mysql_num_rows($rsKooinummers);

while($row_rsKooinummers = mysql_fetch_assoc($rsKooinummers)){
$teller = 0;
$sql="UPDATE rsKooinummers SET Kooinummer=$teller ORDER BY Iid DESC";
$teller++;
}

?>


Alleen dit doet niets.
Het probleem is dat er gesorteerd wordt op velden waardoor de Iid niet op volgorde staat. Hij moet dus de volgorde van de query aanhouden en dan het veld kooinummer vullen met ieder record een waarde +1

Frank
 
Erwin H

Erwin H

09/08/2012 14:57:38
Quote Anchor link
Dat is dus geen handige manier, want je gebruikt php waar je een query voor zou kunnen gebruiken. Zo heb je dus 110 queries teveel. Dat is nogal wat.

Zonder het te kunnen testen (want ik heb niet even een database met zoveel tabellen en inhoud) lijkt onderstaande query het te moeten kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SET @pos = 0;
UPDATE rskooinummers r
INNER JOIN (
  SELECT i.Iid
  FROM tbl_inschrijvingen i
  INNER JOIN tbl_geslacht g
    ON i.Gid = g.Gid
  INNER JOIN tbl_kleuren k
    ON i.Kid = k.Kid
  INNER JOIN tbl_leeftijd l
    ON i.Lid = l.Lid
  INNER JOIN tbl_ras rs
    ON (i.Rid = rs.Rid AND k.Kid = rs.Kid)
  WHERE i.TTid = '$tent'
  ORDER BY
    i.Iid DESC ,
    rs.sorteervolg ,
    k.Volgnummer ,
    g.Geslacht ,
    l.Leeftijd DESC
) j ON r.Iid = j.Id
SET r.kooinummer = ( @pos := @pos + 1 );
Gewijzigd op 09/08/2012 14:58:57 door Erwin H
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/08/2012 18:31:39
Quote Anchor link
Erwin:
... (want ik heb niet even een database met zoveel tabellen en inhoud) ...

Gelukkig maar, want dit is wel heel erg overdreven:
Tabel voor leeftijd, tabel voor geslacht?
Ik krijg ook altijd een beetje de kriebels als je met een join tabellen moet updaten, dat is bij een goed opgezette databases een zeldzaamheid.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.