php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.04.2010, 18:28  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Update Insert von Tabellen

Hallo,

habe folgendes Problem:
Aus einer "Master Tabelle" diverse Daten in seperate Tabellen (insgesamt 22 Stück) aktualisieren/einfügen.
Folgende Abfrage funktioniert aber ich muss immer dieselbe Abfrage 22 mal schreiben gibt es eine einfachere Lösung dafür.
Die zu aktualisierende Tabelle sieht wie folgt aus:
ID_Plant Plant ChangeDate -->
ID_Plant ist Primärschlüssel
Plant ist Unique
ChangeDate ist on update current ....

folgende Abfrage verwende ich:

Update tblproductline AS E Inner Join tblpsrmonth AS T ON
(E.Productline = T.Productline)
SET E.Productline = T.Productline;
INSERT IGNORE INTO tblproductline (Productline)
SELECT Distinct T.Productline
FROM tblpsrmonth AS T
Left JOIN tblproductline AS E
ON E.Productline = T.Productline;

Update tbladhesive AS E Inner Join tblpsrmonth AS T ON
(E.Adhesive = T.Adhesive)
SET E.Adhesive = T.Adhesive;
INSERT IGNORE INTO tbladhesive (Adhesive)
SELECT Distinct T.Adhesive
FROM tblpsrmonth AS T
Left JOIN tbladhesive AS E
ON E.Adhesive = T.Adhesive;


Update tblplant AS E Inner Join tblpsrmonth AS T ON
(E.Plant = T.Plant)
SET E.Plant = T.Plant;
INSERT IGNORE INTO tblplant (Plant)
SELECT Distinct T.Plant
FROM tblpsrmonth AS T
Left JOIN tblplant AS E
ON E.Plant = T.Plant;

usw....

Geht das auch einfacher ???

Gruß
Frank
frank1973 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.04.2010, 18:31  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Die Frage kann man nicht sinnvoll beantworten, bevor nicht erst mal geklärt ist, wozu diese 22 Tabellen dienen sollen bzw. welche Daten sie enthalten.
ChrisB ist offline   Mit Zitat antworten
Alt 09.04.2010, 19:15  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Chris,

wie ich schon sagte es ist immer die gleiche Struktur.
Es sind Daten welche im Varchar Format vorhanden sind und dem Zweck dienen (will mein Boss) wie auch immer, dass diese 22 Datenspalten in seperate Tabellen ausgelagert werden (aktualisiert und beigefügt.
Sprich Import in Main Tabelle Reports anschl. aktualisieren und einfügen neuer DS in diese besagten 22 Tabellen.

Gruß
Frank

Hoffe du/ihr könnt mir nun helfen.
frank1973 ist offline   Mit Zitat antworten
Alt 09.04.2010, 19:35  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von frank1973 Beitrag anzeigen
wie ich schon sagte es ist immer die gleiche Struktur.
Das verletzt schon mal die erste Faustregel für's Datenbank-Design: Daten gleicher Struktur gehören auch in die gleiche Tabelle.

Zitat:
Es sind Daten welche im Varchar Format vorhanden sind und dem Zweck dienen (will mein Boss) wie auch immer, dass diese 22 Datenspalten in seperate Tabellen ausgelagert werden
Ein wirklicher, nachvollziehbarer Sinn hinter dem Vorgehen wird auch aus dieser „Erklärung“ noch nicht erkennbar. (Und das liegt nicht nur am Faktor schwer verständliche Formulierung bzw. sonderbarer Umgang mit deutscher Grammatik, sondern auch an der Kürze allgemein. Wenn die vorliegende Situation nachvollziehbar werden soll, musst du schon etwas mehr ins Detail gehen.)


Wer bewusst von sinnvoller Datenmodellierung abweicht, der kann dann an den Umgang mit diesen Daten auch keine besonderen Ansprüche hinsichtlich „Einfachheit im Umgang damit“ mehr stellen.

Aus dem, was du bisher zur Situation erklärt hast, kann man nur schlussfolgern, dass bei euch eine Diskussion zum Thema sinnvolle Datenmodellierung längst überfällig sein dürfte.
ChrisB ist offline   Mit Zitat antworten
Alt 09.04.2010, 20:08  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Chris,

also Beleidigungen brauche ich mir nicht anhören.
Es ist nach dem ER Model aufgebaut. Alle Daten sind gesamt in einer Tabelle allerdings erfordert es, dass bestimmte Daten hier nochmals ausgelagert werden müssen.
Die Frage war lediglich wie ich die Abfragen evtl besser zusammenfassen kann.
Nicht mehr und nicht weniger.
frank1973 ist offline   Mit Zitat antworten
Alt 09.04.2010, 20:47  
thomas_w
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von frank1973 Beitrag anzeigen

Code:
Update tblproductline AS E Inner Join tblpsrmonth AS T ON 
(E.Productline = T.Productline)
SET E.Productline = T.Productline;

INSERT IGNORE INTO tblproductline (Productline)
SELECT Distinct T.Productline
FROM tblpsrmonth AS T
Left JOIN tblproductline AS E
ON E.Productline = T.Productline;
Für mein Verständnis: Um welche Datenbank handelt es sich hier? Der UPDATE kommt mir Syntaktisch etwas komisch vor.

Der UPDATE sieht formatiert so aus.

Code:
UPDATE tbladhesive AS e
       INNER JOIN tblpsrmonth AS t
         ON ( e.adhesive = t.adhesive )
SET    e.adhesive = t.adhesive;
Funktioniert dieser SQL oder fehlt da irgendwas?

Du könntest zusätzlich die Tabellenstruktur einer der 22 Tabellen zeigen. Da hilft für das allgemeine Verständnis.


Grüße
Thomas
  Mit Zitat antworten
Alt 09.04.2010, 21:11  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Thomas,

danke für deine Antwort. Mysql Datenbank.
Ja es funktioniert, da die Spalte Adhesive Unique ist somit funktioniert es.

Hab die Struktur beigefügt.

Gruß
Frank
Miniaturansicht angehängter Grafiken
erledigt-update-insert-von-tabellen-bild1.jpg  

Geändert von frank1973 (09.04.2010 um 21:15 Uhr).
frank1973 ist offline   Mit Zitat antworten
Alt 09.04.2010, 21:33  
thomas_w
Gast
 
Beiträge: n/a
Standard

Also momentan fällt mir keine einfachere Lösung ein, als den SQL-Block 22x auszuführen, da 22 Tabellen aktualisiert werden. Da läßt sich nichts zusammenfassen. Du könntest höchsten das Ganze in ein Stored Procedure packen, dann wird alles am Stück ausgeführt.
Ich vermute, aus Performancegründen (z. B. Data Warehouse / Controlling) werden die Daten in die einzelnen Tabellen zerteilt. Zu hohe Normalisierung (warum auch immer) ist zwar formal korrekt, aber nicht unbedingt praktisch. Wie gesagt, eventuell das Ganze in ein Stored Procedure packen.

Grüße
Thomas
  Mit Zitat antworten
Alt 09.04.2010, 21:42  
Neuer Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
frank1973 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Thomas,

genau um sowas ähnliches geht es zwischen Controlling, Einkauf und Technische Datenbank.

Dachte mir schon, dass man es nicht einfacher handhaben kann aber ein Versuch war es Wert.

Was meinst du mit "Stored Procedure" habe ich noch nicht gehört.

Gruß
Frank
frank1973 ist offline   Mit Zitat antworten
Alt 09.04.2010, 21:53  
thomas_w
Gast
 
Beiträge: n/a
Standard

"Gespeicherte SQL Proceduren" in der Datenbank. Siehe CREATE PROCEDURE...

Da die ganze Procedure in der Datenbank gespeichert wird (und damit bereits geparst ist), kann eine SP meistens etwas schneller sein, als wenn mehrere SQL-Befehle einzeln zur Datenbank geschickt werden und jedes mal geprüft und dann ausgeführt werden.

Grüße
Thomas
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysqli_multi_query lässt Eintrag aus... Samhayne Datenbanken 8 07.02.2010 19:02
[Erledigt] INSERT und UPDATE gleichzeitig? estebu Datenbanken 8 05.10.2009 00:35
MySQL UPDATE: Feld überall / in allen Tabellen updaten Lightware Datenbanken 13 25.09.2009 12:44
Insert ... On duplicate key update Jacke Datenbanken 2 08.04.2009 14:11
INSERT.. ON DUPLICATE KEY UPDATE cycap Datenbanken 3 26.10.2007 13:08
Pathfinding Algorithmus optimieren? (Algorith. von Dijkstra) Martin13 PHP Tipps 2007 19 04.09.2007 19:20
Update und Insert in einem ? sponer Datenbanken 6 01.07.2007 16:02
Update über zwei Tabellen tekknotrip Datenbanken 2 26.02.2007 16:25
INSERT.. on duplicate key UPDATE... - sinnvoll? mrSpok Datenbanken 3 28.11.2006 10:14
Differenz zwischen 2 Zahlen duderino PHP Tipps 2006 19 10.08.2006 22:12
PRoblem mit Cookie bei PHPbb-Board PHP Tipps 2007 8 12.12.2005 20:56
[Erledigt] fehler den ich noch nie gesehen habe Datenbanken 7 09.06.2005 14:29
mysql update query mit mehreren Tabellen funktioniert nicht PHP-Fortgeschrittene 5 08.01.2005 16:29
Insert und Update Befehl funktioniert nicht Anuschka Datenbanken 2 03.09.2004 00:38
[Erledigt] HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
updateinsert, stored procedure sql tabelle changedate, insert left join, http://www.php.de/datenbanken/66690-erledigt-update-insert-von-tabellen.html, sql update insert php, \mysqli_multi_query\ \insert ignore\

Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum