phpbar.de logo

Mailinglisten-Archive

datenbank bereinigen

datenbank bereinigen

Cybot 4t2.com-mysql at tekkno4u.de
Die Jul 15 16:47:31 CEST 2003


Thomas Wolf wrote:
> hallo liste
> es ist mal wieder soweit das wir unser system umstellen und in diesem zuge
> möchte ich die gesamte struktur bereinigen.
> mein prob ist das ich zwei tabellen habe mit content und dazu eine
> membership tabellen
> in den content tabelen habe ich eine spalte namens memberid welche auf die
> membership tabel spalte id verweist.
> jedoch nach mehreren umstellungen sind einige member gelöscht worden und so
> fehlen die bezüge dazu.
> jetzt möchte habe ich einen sammelmember angelegt und diesen sämtlichen
> content zuweisen.
> kann mir da jemand einen denkanstoss geben?

na den sammelmember anlegen

alle datensätze in cntent suchen die keinen existierenden member mehr in 
der meber-tabelle haben und diesen die id von deinem sammel-meber geben

was du dazu brauchst ist nen LEFT JOIN und ne prüfung auf NULL
http://www.mysql.com/doc/en/Problems_with_NULL.html


ab MySQL 4.0.4 geht das alles in einem query
http://www.mysql.com/doc/en/UPDATE.html#IDX1448

*ungeprüft*
UPDATE content
   LEFT JOIN member
     ON content.member_id = member.id
SET content.member_id = [sammel_member_id]
WHERE member.id IS NULL

für ältere versionen brauchst du zwei

erst alle ID's der verweißten 'content'-datensätze suchen und bei diesen 
dann im zweiten query die meber-id aktualisieren

*ungeprüft*
SELECT content.id
FROM content
   LEFT JOIN member
     ON content.member_id = member.id
WHERE member.id IS NULL

*ungeprüft*
UPDATE content
SET content.member_id = [sammel_member_id]
WHERE content.id IN ([ids_aus_vorigem_query])

-- 
Sebastian Mendel

www.sebastianmendel.de
www.tekkno4u.de
www.nofetish.com

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive