WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   MySQL-Sub-Select (http://www.wcm.at/forum/showthread.php?t=122758)

dub 21.01.2004 13:32

MySQL-Sub-Select
 
Hallo ihr!

Ich seit meine letze Hoffnung, habe ich doch schon den ganzen Tag probiert aber es nicht geschafft.

folgende Ausgangssituation

Tabelle "mitarbeiter" enthält in einer Spalte den Namen und außerdem noch weitere Spalten.

Tabelle "user" enthält eine UserID, Name und ebenfalls weiter Daten. Ich möchte nun in der Tabelle "mitarbeiter" die Spalte "name" durch die dazugehörige User-ID aus der Tabelle "user" ersetzen - wobei die Spalten "name" in beiden tabellen ident sind.

Das würde natürlich über den Umweg PHP einfach lösbar sein, allerdings handelt es sich um knapp 60.000 Einträge und da wird das mit PHP alleine etwas langsam, fürchte ich. Habt ihr eine Idee?

#Hannes#

pc.net 21.01.2004 13:52

http://www.bitmechanic.com/mail-arch...1998/0424.html

wenn das noch aktuell ist, dann wird das von mysql nicht unterstützt ...

oracle versteht das:
Code:

update tabelle1 t1
set t1.name = (select t2.uid
              from tabelle2 t2
              where t2.name = t1.name)

allerdings würden jene datensätze, für die kein entsprechender eintrag gefunden wird, mit NULL upgedatet werden ...

dub 21.01.2004 14:11

Stimmt, funktioniert mit MySQL nicht. Andere Lösungfvorschläge?

#Hannes#

darthj 21.01.2004 14:22

Du könntest die verknüpften Daten in eine 3. Tabelle schreiben und die dann unbenennen. Die 2 alten tabellen joinst du über das Name Attribut.

insert into tab3 select a.atr1,b.atr2
from table1 as a
inner join table2 as b
on b.name=a.name

dub 23.01.2004 18:37

Danke! Ich hab grad das Netz und das MySQL -Handbuch durchstöbert aber keine wirklich gute Erkärung zu JOIN gefunden. Was tut dieser Befehl genau?

Ich weiß gerne über verwendete Befehle bescheid, bevor ich sie verwende ;-)

#Hannes#

pc.net 23.01.2004 18:43

http://www.devtrain.de/artikel_626.aspx

weev 26.01.2004 15:16

bei solchen abfragen mit LEFT JOIN arbeiten, das bringt mehr power. ich kenn deine spaltennamen nicht daher spalte1,spalte2....


select
mitarbeiter.spalte1,
mitarbeiter.spalte2,
name.name as username
from mitarbeiter LEFT JOIN name ON mitarbeiter.UserID=name.UserID
where mitarbeiter.spalte1='irgendwas'


doch achtung, die feldnamen müssen mit der jeweiligen tabelle angesprochen werden (mitarbeiter.spalte1 nicht blos spalte1)!

--weev


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag