Autor | Zpráva | ||
---|---|---|---|
andynewcastleth Profil |
#1 · Zasláno: 13. 2. 2020, 06:14:30
Mám například tabulku zamestnanci (obsahující 1000 záznamů).
A například skrz ID provázanou tabulku zapisy (kam zapisuji zaměstnanecké příchody/odchody/přestávky/obědy) (obsahující 2 000 000 záznamů). A nyní chci pročistit ze zapisy všechny řádky, které nemají existujícího zaměstnance. |
||
Kajman Profil |
#2 · Zasláno: 13. 2. 2020, 08:12:04
Dokážete vypsat přes select takové záznamy, které se mají mazat? Ke smazání je pak už jen kousek.
Kdybyste to měl provázané přes cizí klíč, je možné to mazat hned. Ale mazat zaměstance nedává moc smysl. Spíš se jim v db jen upraví konec pracovního poměru. |
||
andynewcastleth Profil |
To co potřebuji, by jsem sám napsal takto, ale problém bude, že zapisy maji 2 000 000 záznamů a zamestnanci 1000.
Je to příklad, ve skutečnosti neřeším zaměstnance, jen potřebuji ty data čistit. $result = mysqli_query($dblink, "SELECT * FROM zapisy"); while ($row = mysqli_fetch_assoc($result)) { $idZapisu = $row["id"]; $idReference = $row["id_reference"]; $results = $mysqli->query("SELECT id from zamestnanci WHERE id='$idReference'"); $testing=mysqli_num_rows($results); if($testing != 1){ mysqli_query($dblink,"DELETE FROM zapisy WHERE id='$idZapisu'"); } } |
||
Kajman Profil |
#4 · Zasláno: 14. 2. 2020, 08:02:30
Když chcete dělat něco s databázemi, tak si o nich něco přečtěte! Tahle splácanina je hrozná.
Pokud toto vypíše záznamy, které chcete mazat SELECT z.* FROM zapisy WHERE z.id_reference NOT IN (SELECT id FROM zamestnanci) |
||
Časová prodleva: 4 roky
|
0