Hallo Leute, Im Vorhinein: Ich weiss nicht, od das das richtige Unterforum ist. Ich bin DAU und weiss über irgendwelche Fachbegriffe aus der IT Welt meist nicht Bescheid. Darum seid bitte nicht so kritisch mit meinen "Fachausdrücken". Zur Vorgeschichte: Ich wurde einmal selbstständig und habe am falschen Platz gespart. Ich habe auf CAO Faktura als WAWI gesetzt, was ich jetzt bereue. Warum ich das bereue ist einfach: Wenn man was fragt, wird vom Etwickler sofort betont, wie unwichtig die Frage ist und man nicht wüsste, wie schwer er beschäftigt ist. Ich wage jetzt keine Diagnose zu stellen, würde aber eher auf Choleriker tendieren. Wichtige Features fehlen einfach im Programm und laut Entwickler wird es die auch nie geben, weil er erstens dafür keine Zeit hat und auch sicher nicht für ein paar Benutzer entwickelt. Schade ist, das ich gleich 15 Lizenzen am laufen habe und dies die Mühe nicht wert ist. Das einzige gute ist, das das Program Datenbank basierend ist. (MariaDB 10.2) Das schlechteste an der Datenbank bin Ich selbst, dar ich mich damit NULL auskenne :-( Das Vorhaben: Es gibt ein Rechnungsjournal, in welchem sich die ganzen gebuchten Artikel befinden. Diesen Artikeln sollen !nachträglich! ein Gewicht zugewiesen werden. Das Gewicht brauche ich für die Vorlage für die Verpackungsverordnung beim Lizensierer und auch zur Gewichtsabrechung laut ElektroG. Warum habe ich das Gewicht nicht schon früher angegeben: Es kann erst seit neuen eine komplette Liste exportiert werden. Das Script und Formular wurde von einem Benutzer im Forum erstellt, da es diese Funktion sonst nie geben hat. Scheinbar verschickt der Entwickler seine Lizenzen nur über Email und nicht wie die meisten gewerbetreibende per Post. Daher ist dieses WICHTIGE Feature für den Entwickler (wieder einmal) unwichtig. Nicht einmal verschiedene Gerätekategorien werden unterstützt. Die Anfrage: Eine Nachfrage beim Entwickler ob es möglich ist, das aktuelle Gewicht der Artikel !nachträglich! zu ändern brachte nur hervor, dass er das nicht mache, weil er keine Änderungen an der Datenbank unterstützt. Und was mir überhaupt einfällt, auf so eine Idee zu kommen, weil (ER) man das normal nicht braucht. Was ich von dem System weiss: Ich habe mit HeidiSQL die Datenbank geöffnet. Es gibt eine "Tabelle" die "artikel" heisst. Dort ist das aktuelle Gewicht, die Artikelnummer und vieles mehr zur Artikel gespeichert. Also schon mal notiert: artikel enthält: ARTNUM artikel enthält: GEWICHT Es gibt die wichtigere "Tabelle" die "journalpos" heisst. Dort ist das Gewicht, die Artikelnummer und vieles mehr zum bereits gebuchten Artikel gespeichert. Also schon mal notiert: journalpos enthält: ARTNUM journalpos enthält: GEWICHT Was mir fehlt: Ein SQL Script, was ich in HeidiSQL ausführen kann und welches mir das GEWICHT von der Tabelle "artikel" in das GEWICHT von der Tabelle "journalpos" kopiert, wenn die ARTNUM stimmt. Kann mir da jemand behilflich sein? Leider werden solche Anfragen im CAO Forum gelöscht, weil sie gegen das Ego des Entwicklers gehen und eine Datenbank Manipulation darstellen. mfG Eure Kirsten
Hallo Kirsten, Willst Du das Gewicht in "journalpos" überschreiben? >Tabelle "artikel" in das GEWICHT von der Tabelle "journalpos" >kopiert, >wenn die ARTNUM stimmt. Markus
Markus W. schrieb: > Hallo Kirsten, > > Willst Du das Gewicht in "journalpos" überschreiben? Ja. Da soll das Gewicht von artikel rein.
Hallo Kirsten, habe von HeidiSQL bis dato noch nichts gehört. Habe mir geraden den Source-Code herunter geladen, und dabei gesehen, dass es sich um Pascal-Code handelt. Auf die Schnelle kann ich den jetzt nicht kompilieren. Ist aber für Dein Problem nicht relevant. Ich bin zwar kein super SQL Experte, habe aber hier und da damit zu tun. Was Du brauchst ist eine UPDATE Query in der Form. UPDATE journalpos SET GEWICHT="X" WHERE artikel.ARTNUM=journalpos.ARTNUM; Da das X Aber kein statischer/konstanter Wert ist, sondern aus einer anderen Tabelle geholt werden soll, muss X Durch eine Weitere Abfrage-Query ersetzt werden. UPDATE journalpos SET GEWICHT=(SELECT GEWICHT FROM artikel WHERE artikel.ARTNUM=journalpos.ARTNUM); Die SQL Update-Query ist noch nicht ganz fertig, zeigt Dir aber schon mal die Richtung. Was Du aber machen musst ist ein Backup der Datenbank, oder beider Tabellen. Wie Du das anstellst, musst Du selber für Deine Anwendung raus finden. Falls keine Anderen brauchbaren Antworten kommen, kann ich Dir eventuell am Nachmittag noch weiter helfen, wenn die Arbeit getan ist. Bis dahin viel Erfolg und gutes Gelingen. Markus.
Leider ghet das nicht so richtig. Das Problem ist auch, dass mir die Fehlermeldung NULL sagt. Wie bereits erwähnt, währe eine richtige SQL "Abfrage" zielführend. Selbstzusammenbauen ist bei mir eben nicht.
Ps.: Anfrage kann auch in der MySQL Konsole ausgeführt werden.
Sind journalpos und artikel die wirklichen Tabellennamen, oder hast Du sie nur einet Tabellen-Überschrift entnommen? mach mal select count(*) from artikel; und select count(*) from journalpos; Das zeigt Dir die Anzahl der Einträge in der Tabelle und ob der Tabellen-Name stimmt. Markus
Wenn du eine MySQL Konsole hast, mach mal show databases; Und Poste mal hir. Dann use <den zugehörigen DB-Namen>; show tabels; Und poste auch die mal hier. Dann mach mal desc journalpos; und desc artikel; Das zeigt Dir den Tabellenaufbau. ;-) Schnellkurs in MySQL-SQL. Markus
:
Bearbeitet durch User
Kirsten B. schrieb: > Das Problem ist auch, dass mir die Fehlermeldung NULL sagt. Der Tabellenname stimmt nicht. Entweder ist er wirklich falsch oder die passende DB wo diese Tabellen drinn sind wurde nicht vorher ausgewählt. Mach mal SHOW DATABASES; Danach wählt du die passende aus mit USE derNAmeDerDBmitDenPassendenTabellen; Zur Kontrolle lässt du dir die Tabellen der ausgewählten Datenbank anzeigen: show tables; Wenn die Tabellen auftauchen die du oben brauchst ist es die richtige DB. Jetzt kannst du nochmal dein UPDATE.... ausführen.
Ich habe die Abfragen in HEidiSQL gemacht, weil es das selbe liefert und besser zu bedienen ist. Folgendes geht (Liefert plauible Werte zurück): select count(*) from journalpos; select count(*) from artikel; select ARTNUM from journalpos; select ARTNUM from artikel; select GEWICHT from journalpos; select GEWICHT from artikel; show tables; liefert:
1 | Tables_in_mysql4122 |
2 | adressen |
3 | adressen_asp |
4 | adressen_lief |
5 | adressen_loesch |
6 | adressen_log |
7 | adressen_merk |
8 | adressen_to_merk |
9 | adressen_versicherung |
10 | adressen_wgr_rabatt |
11 | adressgruppen |
12 | anrufe |
13 | artikel |
14 | artikel_attribut |
15 | artikel_attribut_optionen |
16 | artikel_bdaten |
17 | artikel_bdaten_vkau |
18 | artikel_etikett |
19 | artikel_historie |
20 | artikel_inventur |
21 | artikel_inventur_sn |
22 | artikel_kat |
23 | artikel_kat_ltext |
24 | artikel_log |
25 | artikel_ltext |
26 | artikel_merk |
27 | artikel_pakete |
28 | artikel_pakete_pos |
29 | artikel_preis |
30 | artikel_schnellzugriff |
31 | artikel_schnellzugriff_log |
32 | artikel_sernum |
33 | artikel_shop |
34 | artikel_stuecklist |
35 | artikel_to_attribut |
36 | artikel_to_kat |
37 | artikel_to_merk |
38 | artikel_to_vorgabezeit |
39 | artikel_var |
40 | back_adressen |
41 | back_adressen_asp |
42 | back_adressen_lief |
43 | back_adressen_loesch |
44 | back_adressen_log |
45 | back_adressen_merk |
46 | back_adressen_to_merk |
47 | back_adressen_versicherung |
48 | back_adressen_wgr_rabatt |
49 | back_adressgruppen |
50 | back_anrufe |
51 | back_artikel |
52 | back_artikel_attribut |
53 | back_artikel_attribut_optionen |
54 | back_artikel_bdaten |
55 | back_artikel_bdaten_vkau |
56 | back_artikel_etikett |
57 | back_artikel_historie |
58 | back_artikel_inventur |
59 | back_artikel_inventur_sn |
60 | back_artikel_kat |
61 | back_artikel_kat_ltext |
62 | back_artikel_log |
63 | back_artikel_ltext |
64 | back_artikel_merk |
65 | back_artikel_pakete |
66 | back_artikel_pakete_pos |
67 | back_artikel_preis |
68 | back_artikel_schnellzugriff |
69 | back_artikel_schnellzugriff_log |
70 | back_artikel_sernum |
71 | back_artikel_shop |
72 | back_artikel_stuecklist |
73 | back_artikel_to_attribut |
74 | back_artikel_to_kat |
75 | back_artikel_to_merk |
76 | back_artikel_to_vorgabezeit |
77 | back_artikel_var |
78 | back_benutzerrechte |
79 | back_benutzerrechte_log |
80 | back_blz |
81 | back_dep |
82 | back_ekbestell |
83 | back_ekbestell_info |
84 | back_ekbestell_op |
85 | back_ekbestell_pos |
86 | back_ekeingang |
87 | back_ekeingang_pos |
88 | back_ekeingang_pos_sernum |
89 | back_export |
90 | back_export_parameter |
91 | back_fibu_ect |
92 | back_fibu_ect_export |
93 | back_fibu_konten |
94 | back_firma |
95 | back_gelangen |
96 | back_hersteller |
97 | back_hersteller_info |
98 | back_info |
99 | back_inventur |
100 | back_journal |
101 | back_journal_abschlag |
102 | back_journal_op |
103 | back_journalpos |
104 | back_journalpos_sernum |
105 | back_karten |
106 | back_kasse_abschluss |
107 | back_kasse_abschluss_pos |
108 | back_kasse_protokoll |
109 | back_kfz |
110 | back_lager |
111 | back_lager_mengen |
112 | back_land |
113 | back_lieferarten |
114 | back_lieferschein |
115 | back_lieferschein_pos |
116 | back_lieferzeiten |
117 | back_link |
118 | back_login |
119 | back_mahnung |
120 | back_mail |
121 | back_mail_adressen |
122 | back_mail_anhang |
123 | back_mail_konten |
124 | back_mail_ordner |
125 | back_mail_regeln |
126 | back_mengeneinheit |
127 | back_mitarbeiter |
128 | back_mitarbeiter_log |
129 | back_nummern_log |
130 | back_pim_aufgaben |
131 | back_pim_kontakte |
132 | back_pim_termine |
133 | back_plz |
134 | back_pos_ta |
135 | back_produktion |
136 | back_produktion_bdaten |
137 | back_produktion_fertig |
138 | back_produktion_komm |
139 | back_produktion_komm_pos |
140 | back_produktion_pos |
141 | back_produktion_pos_sernum |
142 | back_produktion_vorgabezeiten |
143 | back_produktion_zeiten |
144 | back_projekte |
145 | back_rabattgruppen |
146 | back_rabmatrix |
147 | back_registry |
148 | back_registry_log |
149 | back_rksv_log |
150 | back_schriftverkehr |
151 | back_schriftverkehr_adr |
152 | back_sprachen |
153 | back_textbausteine |
154 | back_ueberweisungen |
155 | back_umsatzzaehler |
156 | back_vertrag |
157 | back_vertragpos |
158 | back_vertreter |
159 | back_vertreter_abr |
160 | back_warengruppen |
161 | back_warengruppen_log |
162 | back_wartung |
163 | back_zahlungen |
164 | back_zahlungsarten |
165 | back_zahlungsarten_log |
166 | back_zeiten_aufgaben |
167 | back_zeiten_mitarbeiter |
168 | back_zeiten_projekt |
169 | back_zeiten_stempel |
170 | back_zusatzdaten |
171 | benutzerrechte |
172 | benutzerrechte_log |
173 | blz |
174 | dep |
175 | ekbestell |
176 | ekbestell_info |
177 | ekbestell_op |
178 | ekbestell_pos |
179 | ekeingang |
180 | ekeingang_pos |
181 | ekeingang_pos_sernum |
182 | export |
183 | export_parameter |
184 | fibu_ect |
185 | fibu_ect_export |
186 | fibu_konten |
187 | firma |
188 | gelangen |
189 | hersteller |
190 | hersteller_info |
191 | info |
192 | inventur |
193 | journal |
194 | journal_abschlag |
195 | journal_op |
196 | journalpos |
197 | journalpos_sernum |
198 | karten |
199 | kasse_abschluss |
200 | kasse_abschluss_pos |
201 | kasse_protokoll |
202 | kfz |
203 | lager |
204 | lager_mengen |
205 | land |
206 | lieferarten |
207 | lieferschein |
208 | lieferschein_pos |
209 | lieferzeiten |
210 | link |
211 | login |
212 | mahnung |
213 | |
214 | mail_adressen |
215 | mail_anhang |
216 | mail_konten |
217 | mail_ordner |
218 | mail_regeln |
219 | mengeneinheit |
220 | mitarbeiter |
221 | mitarbeiter_log |
222 | nummern_log |
223 | pim_aufgaben |
224 | pim_kontakte |
225 | pim_termine |
226 | plz |
227 | pos_ta |
228 | produktion |
229 | produktion_bdaten |
230 | produktion_fertig |
231 | produktion_komm |
232 | produktion_komm_pos |
233 | produktion_pos |
234 | produktion_pos_sernum |
235 | produktion_vorgabezeiten |
236 | produktion_zeiten |
237 | projekte |
238 | rabattgruppen |
239 | rabmatrix |
240 | registry |
241 | registry_log |
242 | rksv_log |
243 | schriftverkehr |
244 | schriftverkehr_adr |
245 | sprachen |
246 | textbausteine |
247 | ueberweisungen |
248 | umsatzzaehler |
249 | vertrag |
250 | vertragpos |
251 | vertreter |
252 | vertreter_abr |
253 | warengruppen |
254 | warengruppen_log |
255 | wartung |
256 | zahlungen |
257 | zahlungsarten |
258 | zahlungsarten_log |
259 | zeiten_aufgaben |
260 | zeiten_mitarbeiter |
261 | zeiten_projekt |
262 | zeiten_stempel |
263 | zusatzdaten |
desc journalpos; liefert:
1 | Field Type Null Key Default Extra |
2 | REC_ID int(11) NO PRI \N auto_increment |
3 | QUELLE tinyint(4) NO MUL 0 |
4 | QUELLE_SUB tinyint(4) NO 0 |
5 | QUELLE_SRC int(11) NO MUL -1 |
6 | QUELLE_WE int(11) NO -1 |
7 | PROJEKT_ID int(11) NO -1 |
8 | JOURNAL_ID int(11) NO MUL 0 |
9 | JOURNAL_SRC int(11) NO -1 |
10 | WARENGRUPPE int(11) NO -1 |
11 | ARTIKELTYP char(1) NO |
12 | ARTIKEL_ID int(11) NO MUL -1 |
13 | TOP_POS_ID int(11) NO -1 |
14 | ADDR_ID int(11) NO MUL -1 |
15 | LTERMIN date YES \N |
16 | ATRNUM varchar(100) YES \N |
17 | VRENUM varchar(20) NO |
18 | POSITION int(11) NO 0 |
19 | VIEW_POS char(3) YES \N |
20 | LVPOS varchar(255) YES \N |
21 | MATCHCODE varchar(255) YES \N |
22 | ARTNUM varchar(100) YES \N |
23 | BARCODE varchar(20) YES \N |
24 | MENGE decimal(10,3) NO 0.000 |
25 | MENGE_STK decimal(10,3) NO 0.000 |
26 | LAENGE varchar(20) YES \N |
27 | BREITE varchar(20) YES \N |
28 | HOEHE varchar(20) YES \N |
29 | GROESSE varchar(20) YES \N |
30 | DIMENSION varchar(20) YES \N |
31 | GEWICHT decimal(10,4) NO 0.0000 |
32 | ME_EINHEIT varchar(50) YES \N |
33 | PR_EINHEIT decimal(10,3) NO 1.000 |
34 | VPE decimal(10,3) NO 1.000 |
35 | EK_PREIS decimal(10,4) NO 0.0000 |
36 | CALC_FAKTOR decimal(10,5) NO 0.00000 |
37 | EPREIS decimal(10,4) NO 0.0000 |
38 | GPREIS decimal(10,2) NO 0.00 |
39 | E_RGEWINN decimal(10,4) NO 0.0000 |
40 | G_RGEWINN decimal(10,2) NO 0.00 |
41 | RABATT decimal(10,2) NO 0.00 |
42 | RABATT2 decimal(10,4) NO 0.0000 |
43 | RABATT3 decimal(10,4) NO 0.0000 |
44 | E_RABATT_BETRAG decimal(10,4) NO 0.0000 |
45 | G_RABATT_BETRAG decimal(10,2) NO 0.00 |
46 | STEUER_CODE tinyint(4) NO 0 |
47 | ALTTEIL_PROZ decimal(10,2) NO 0.10 |
48 | ALTTEIL_STCODE tinyint(4) NO 0 |
49 | PROVIS_PROZ decimal(5,2) NO 0.00 |
50 | PROVIS_WERT decimal(10,2) NO 0.00 |
51 | GEBUCHT enum('N','Y') NO N |
52 | GEGENKTO int(11) NO -1 |
53 | BEZEICHNUNG text YES \N |
54 | BEZEICHNUNG_LAND text YES \N |
55 | POS_TEXT1 varchar(250) YES \N |
56 | POS_TEXT2 varchar(250) YES \N |
57 | POS_TEXT3 varchar(250) YES \N |
58 | POS_DATUM date YES \N |
59 | SN_FLAG enum('N','Y') NO N |
60 | ALTTEIL_FLAG enum('N','Y') NO N |
61 | BEZ_FEST_FLAG enum('N','Y') NO N |
62 | BRUTTO_FLAG enum('N','Y') NO N |
63 | NO_RABATT_FLAG enum('N','Y') NO N |
64 | APOS_FLAG enum('N','Y') NO N |
65 | EKEINGANG enum('N','Y') NO N |
66 | WARENGRUPPENNAME varchar(250) YES \N |
67 | PROJEKT_ARTIKEL tinyint(1) NO 0 |
68 | FREMD_EPREIS decimal(10,4) NO 0.0000 |
69 | FREMD_GPREIS decimal(10,2) NO 0.00 |
70 | ENDS_EPREIS decimal(10,4) NO 0.0000 |
71 | ENDS_GPREIS decimal(10,2) NO 0.00 |
72 | ENDS_WG int(11) NO -1 |
73 | ENDS_WGNAME varchar(250) YES \N |
74 | PROJEKTPREIS enum('N','Y') YES N |
desc artikel; liefert:
1 | Field Type Null Key Default Extra |
2 | REC_ID int(11) NO PRI \N auto_increment |
3 | ARTNUM varchar(100) YES MUL \N |
4 | ERSATZ_ARTNUM varchar(100) YES \N |
5 | ERSATZ_ARTIKEL_ID int(11) NO -1 |
6 | MATCHCODE varchar(255) YES MUL \N |
7 | WARENGRUPPE int(11) NO MUL 0 |
8 | RABGRP_ID varchar(10) NO - |
9 | BARCODE varchar(40) YES MUL \N |
10 | BARCODE2 varchar(40) YES \N |
11 | BARCODE3 varchar(40) YES \N |
12 | ARTIKELTYP char(1) NO N |
13 | KURZNAME varchar(150) YES \N |
14 | LANGNAME text YES \N |
15 | KAS_NAME varchar(150) YES \N |
16 | INFO text YES \N |
17 | ME_ID int(11) NO 1 |
18 | VPE decimal(10,3) NO 1.000 |
19 | VPE_EK decimal(10,3) NO 1.000 |
20 | PR_EINHEIT decimal(10,2) NO 1.00 |
21 | LAENGE varchar(20) YES \N |
22 | BREITE varchar(20) YES \N |
23 | HOEHE varchar(20) YES \N |
24 | GROESSE varchar(20) YES \N |
25 | DIMENSION varchar(20) YES \N |
26 | GEWICHT decimal(10,4) NO 0.0000 |
27 | INVENTUR_WERT decimal(5,2) NO 100.00 |
28 | EK_PREIS decimal(12,4) NO 0.0000 |
29 | EK_VPE decimal(12,4) NO 0.0000 |
30 | EKDS_PREIS decimal(12,4) NO 0.0000 |
31 | VK1 decimal(12,4) NO 0.0000 |
32 | VK1B decimal(12,4) NO 0.0000 |
33 | VK2 decimal(12,4) NO 0.0000 |
34 | VK2B decimal(12,4) NO 0.0000 |
35 | VK3 decimal(12,4) NO 0.0000 |
36 | VK3B decimal(12,4) NO 0.0000 |
37 | VK4 decimal(12,4) NO 0.0000 |
38 | VK4B decimal(12,4) NO 0.0000 |
39 | VK5 decimal(12,4) NO 0.0000 |
40 | VK5B decimal(12,4) NO 0.0000 |
41 | BASISPR_FAKTOR decimal(10,5) NO 1.00000 |
42 | BASISPR_ME_ID int(11) NO 1 |
43 | MAXRABATT decimal(5,2) NO 0.00 |
44 | MINGEWINN decimal(5,2) NO 0.00 |
45 | PROVIS_PROZ decimal(5,2) NO 0.00 |
46 | STEUER_CODE tinyint(4) NO 2 |
47 | ALTTEIL_FLAG enum('N','Y') NO N |
48 | NO_RABATT_FLAG enum('N','Y') NO N |
49 | NO_PROVISION_FLAG enum('N','Y') NO N |
50 | NO_BEZEDIT_FLAG enum('N','Y') NO N |
51 | NO_EK_FLAG enum('N','Y') NO N |
52 | NO_VK_FLAG enum('N','Y') NO N |
53 | SN_FLAG enum('N','Y') NO N |
54 | FSK18_FLAG enum('N','Y') NO N |
55 | AUTODEL_FLAG enum('N','Y') NO N |
56 | KOMMISION_FLAG enum('N','Y') YES \N |
57 | LIZENZ_FLAG enum('N','Y') NO N |
58 | PRODUKTION_FLAG enum('N','Y') NO N |
59 | NO_STOCK_FLAG enum('N','Y') NO N |
60 | KONFIG tinyint(1) NO 0 |
61 | KENNZEICHNUNG_FLAG tinyint(1) NO 0 |
62 | MENGE_FLAG tinyint(1) NO 0 |
63 | PROD_DAUER int(5) unsigned NO 14 |
64 | VK_LIEFERZEIT_ID int(11) unsigned NO 1 |
65 | EK_LIEFERZEIT_ID int(11) unsigned NO 1 |
66 | MENGE_START decimal(12,4) NO 0.0000 |
67 | MENGE_AKT decimal(12,4) NO 0.0000 |
68 | MENGE_MIN decimal(12,4) NO 0.0000 |
69 | MENGE_BVOR decimal(12,4) NO 0.0000 |
70 | MENGE_WARN decimal(12,4) NO 0.0000 |
71 | DEFAULT_LIEF_ID int(11) NO -1 |
72 | ERLOES_KTO int(11) YES \N |
73 | AUFW_KTO int(11) YES \N |
74 | HERKUNFTSLAND char(3) YES \N |
75 | HERSTELLER_ID int(11) NO -1 |
76 | HERST_ARTNUM varchar(100) YES \N |
77 | LAGERORT varchar(255) YES \N |
78 | PFAND1_ARTIKEL_ID int(11) NO -1 |
79 | PFAND1_MENGE decimal(10,3) NO 1.000 |
80 | PFAND2_ARTIKEL_ID int(11) NO -1 |
81 | PFAND2_MENGE decimal(10,3) NO 0.000 |
82 | ZOLLNUMMER varchar(250) YES \N |
83 | ETIKETT_PRINT tinyint(3) unsigned NO 0 |
84 | LIEFSTATUS enum('LAGER','AUSLAUF','AUSGELAUFEN') NO LAGER |
85 | LIEFERTERMIN date YES \N |
86 | VARARTNUM varchar(100) YES \N |
87 | VARTEXT varchar(255) YES \N |
88 | VAR_ID int(11) YES -1 |
89 | VARNAME varchar(255) YES \N |
90 | NE_ZUSCHLAG_FLAG enum('N','Y') NO N |
91 | NE_GEWICHT decimal(10,3) NO 0.000 |
92 | NE_TYP varchar(10) YES \N |
93 | ERSTELLT datetime YES \N |
94 | ERST_NAME varchar(20) YES \N |
95 | GEAEND datetime YES \N |
96 | GEAEND_NAME varchar(20) YES \N |
97 | SHOP_ID tinyint(4) NO MUL -1 |
98 | SHOP_ARTIKEL_ID int(11) NO -1 |
99 | SHOP_KURZTEXT text YES \N |
100 | SHOP_LANGTEXT text YES \N |
101 | SHOP_IMAGE varchar(100) YES \N |
102 | SHOP_IMAGE_MED varchar(100) YES \N |
103 | SHOP_IMAGE_LARGE varchar(100) YES \N |
104 | SHOP_DATENBLATT varchar(100) YES \N |
105 | SHOP_KATALOG varchar(100) YES \N |
106 | SHOP_ZEICHNUNG varchar(100) YES \N |
107 | SHOP_HANDBUCH varchar(100) YES \N |
108 | AUSSCHREIBUNGSTEXT varchar(100) YES \N |
109 | SHOP_PREIS_LISTE decimal(12,4) NO 0.0000 |
110 | SHOP_VISIBLE int(1) YES \N |
111 | SHOP_DATE_NEU date YES \N |
112 | SHOP_FAELLT_WEG_AB date YES \N |
113 | SHOP_CLICK_COUNT int(11) YES \N |
114 | SHOP_SYNC tinyint(1) unsigned YES \N |
115 | SHOP_ZUB tinyint(1) unsigned YES \N |
116 | SHOP_CHANGE_DATE datetime YES \N |
117 | SHOP_CHANGE_FLAG tinyint(1) unsigned NO 0 |
118 | SHOP_DEL_FLAG enum('N','Y') NO N |
119 | SHOP_PASSWORD varchar(20) YES \N |
120 | SHOP_META_TITEL varchar(255) YES \N |
121 | SHOP_META_BESCHR text YES \N |
122 | SHOP_META_KEY varchar(255) YES \N |
123 | SHOP_SORT int(11) unsigned NO 0 |
124 | SHOP_LIEFSTATUS int(11) unsigned NO 1 |
125 | SHOP_LIEFTEXT varchar(255) NO Standard |
126 | SHOP_CHANGE_LIEF int(1) unsigned NO 0 |
127 | USERFELD_01 varchar(255) YES \N |
128 | USERFELD_02 varchar(255) YES \N |
129 | USERFELD_03 varchar(255) YES \N |
130 | USERFELD_04 varchar(255) YES \N |
131 | USERFELD_05 varchar(255) YES \N |
132 | USERFELD_06 varchar(255) YES \N |
133 | USERFELD_07 varchar(255) YES \N |
134 | USERFELD_08 varchar(255) YES \N |
135 | USERFELD_09 varchar(255) YES \N |
136 | USERFELD_10 varchar(255) YES \N |
137 | PROJEKT_ARTIKEL tinyint(1) NO 0 |
138 | ENDS_PREIS decimal(12,4) NO 0.0000 |
139 | ENDS_WG int(11) YES \N |
140 | HINWEIS text YES \N |
Heinerich, wurde schon geposted - von mir ;-) LG Markus
Markus W. schrieb: > wurde schon geposted - von mir ;-) Ja ich habe es nach dem absenden gemerkt. ;)
Kirsten, bist Du Dir sicher, dass bei der Menge von Tabellen, was auf eine gewisse Komplexität schließen lässt, ein verändern der Tabellen-Inhalte hinten durch die Brust, sinnvoll ist. Das back_xxxx lässt drauf schließen, dass die Applikation selber Backups der Tabellen macht. Kannst Du die Applikation beenden und dann erst die Daten- basis modifizieren, oder ist es Dir nicht möglich, weil Du nur ein Client auf die DBk bist. Ich kenne leider das zugehörige Programm nicht. LG Markus
Ich habe jetzt schon erfolgreich folgendes probiert: UPDATE journalpos SET GEWICHT= 13 WHERE ARTNUM = "001015"; Aber das Gewicht aus der Tabelle "artikel" kann ich nicht zuweisen. Ausserdem sollten alle ARTNUM im artikel durchgegangen werden. Es soll nur das Gewicht in journalpos geändert werden. Das geht ohne Problem.
CAO Faktura kann beendet werden. Ausserdem bin ich Administrator auf dem PC. Datenbank läuft auf dem PC.
OK, wollte nur sicherstellen, das Du Dein System nicht schrottest und dann "böse" auf mich bist ;-). Dann kannst Du ja dich an der Datenbank vergreifen, mit allen Konsequenzen. Markus
Kirsten hast Du mal geschaut, ob die Anzahl der Einträge in den beiden Tabellen identisch ist? select count(*) from journalpos; select count(*) from artikel; Die Werte/Resultate hast Du ja nicht gepostet. Nicht dass Du gewisse Werte änderst und andere wieder nicht und damit ein gewisses Durcheinander verursachst. Oder wäre das nicht so schlimm? Markus
:
Bearbeitet durch User
Das hier geht auch schon: UPDATE journalpos SET GEWICHT= (select GEWICHT from artikel where ARTNUM = "001015") WHERE ARTNUM = "001015"; Wie kann ich eine for Schleife erstellen, welche alle ARTNUM von 000000 bis 999999 durchgeht? select count(*) from journalpos; liefert: 23257 select count(*) from artikel; liefert 465 Was ich weiss: Im Journalpos werden die einzelnen Positionen (Artikel) aufgelistet, welche auf einer Rechnung enthalten sind. Artikel enthält die einzelnen Artikelmerkmale Leider ist da der CAO Faktura Support so schlecht. Es gibt ja nicht einmal ein Handbuch / Anleitung dazu. CAO Faktura Bewertung : Übelst.
Moin, - bevor Du mit dem Massenupdate anfaengst (ein vergessenes WHERE aendert alles): - Hast Du ein funktionsfaehiges Backup? - Kannst Du die Daten erfolgreich wieder einlesen? z.b. auf eine Test- Maschine? Gruesse Th.
Kann ich beides bejahen :-) Backup erstellt und auch getestet !
Kirsten, >Was ich weiss: >Im Journalpos werden die einzelnen Positionen (Artikel) aufgelistet, >welche auf einer Rechnung enthalten sind. Du willst also "journalpos" (die Rchnungen) mir den zugehörigen "GEWICHT" aus der Tabelle "artikel" korrigieren. Bedeutet: Du suchst Dir von jeder Position aus "journalpos" die "ARTNUM" raus schaust nach dem zugehörigem "GEWICHT" in "artikel" unter der "ARTNUM" und kopiertst den "GEWICHT"-wert nach "journalpos. GWEICHT" So in etwa. Das sollte mit einer Query möglich sein. Werde mal schauen ob ich das hinkriege, oder jemand schneller ist. Markus
Meine Lösung, bitte testen!!! UPDATE journalpos SET GEWICHT = (select GEWICHT from journalpos where journalpos.ARTNUM=artikel.ARTNUM) WHERE EXISTS (SELECT ARTNUM FROM journalpos WHERE journalpos.ARTNUM=artikel.ARTNUM); und mögen sich die SQL-Experten melden, wenn ich noch einen Wurm drin habe. Markus
:
Bearbeitet durch User
Geht leider nicht :-(
Meine Lösung mit einer Test-DBk.
>sqlite3 ./db.bin
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> CREATE TABLE journalpos (
...> ID INTEGER PRIMARY KEY,
...> ARTNUM TEXT NOT NULL,
...> GEWICHT TEXT NOT NULL);
sqlite> CREATE TABLE artikel (
...> ID INTEGER PRIMARY KEY,
...> ARTNUM TEXT NOT NULL,
...> GEWICHT TEXT NOT NULL);
sqlite> INSERT INTO artikel (ID,ARTNUM,GEWICHT) VALUES(1,'001','10kg');
sqlite> INSERT INTO artikel (ID,ARTNUM,GEWICHT) VALUES(2,'002','20kg');
sqlite> INSERT INTO artikel (ID,ARTNUM,GEWICHT) VALUES(3,'003','30kg');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(1,'001','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(2,'001','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(3,'001','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(4,'002','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(5,'002','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(6,'002','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(7,'003','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(4,'003','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(8,'003','0');
sqlite> INSERT INTO journalpos (ID,ARTNUM,GEWICHT) VALUES(9,'003','0');
sqlite> select * from artikel;
1|001|10kg
2|002|20kg
3|003|30kg
sqlite> select * from journalpos;
1|001|0
2|001|0
3|001|0
4|002|0
5|002|0
6|002|0
7|003|0
8|003|0
9|003|0
sqlite> UPDATE journalpos SET GEWICHT = (select GEWICHT from journalpos
where journalpos.ARTNUM=artikel.ARTNUM)
...> WHERE EXISTS (SELECT ARTNUM FROM journalpos WHERE
journalpos.ARTNUM=artikel.ARTNUM);
Error: no such column: artikel.ARTNUM
Hast recht ist noch ein Wurm drin - eine Augenblick.
Markus
Stehe noch auf dem Schlauch. Laut SQL Konvention werden Tabellennamen mittels "Punkt" vom Spalten-Namen getrennt. Bin noch am Suchen. Markus
So nun hat es geklappt! sqlite> select * FROM journalpos j JOIN artikel a ON j.ARTNUM = a.ARTNUM; 1|001|0|1|001|10kg 2|001|0|1|001|10kg 3|001|0|1|001|10kg 4|002|0|2|002|20kg 5|002|0|2|002|20kg 6|002|0|2|002|20kg 7|003|0|3|003|30kg 8|003|0|3|003|30kg 9|003|0|3|003|30kg sqlite> select GEWICHT FROM journalpos j JOIN artikel a ON j.ARTNUM = a.ARTNUM; Error: ambiguous column name: GEWICHT sqlite> select j.GEWICHT FROM journalpos j JOIN artikel a ON j.ARTNUM = a.ARTNUM; 0 0 0 0 0 0 0 0 0 sqlite> select a.GEWICHT FROM journalpos j JOIN artikel a ON j.ARTNUM = a.ARTNUM; 10kg 10kg 10kg 20kg 20kg 20kg 30kg 30kg 30kg sqlite> select a.GEWICHT FROM journalpos j JOIN artikel a ON j.ARTNUM = a.ARTNUM; 10kg 10kg 10kg 20kg 20kg 20kg 30kg 30kg 30kg sqlite> sqlite> sqlite> UPDATE journalpos SET GEWICHT=(select a.GEWICHT FROM journalpos j JOIN artikel a ON j.ARTNUM = a.ARTNUM); sqlite> select * from journalpos; 1|001|10kg 2|001|10kg 3|001|10kg 4|002|10kg 5|002|10kg 6|002|10kg 7|003|10kg 8|003|10kg 9|003|10kg Markus
Nur damit es keine Verwirrung gibt. Oben ist nur mein Fehler-Findungs-Weg dargestellt. Die richtige Query ist die u.g. UPDATE journalpos SET GEWICHT=(select a.GEWICHT FROM journalpos j JOIN artikel a ON j.ARTNUM = a.ARTNUM); Markus PS.: Hatte schon lange keinen JOIN in meinen Abfragen, sorry.
Stop! ist wohl immer noch der Wurm drin %-) sqlite> select * from journalpos; 1|001|10kg 2|001|10kg 3|001|10kg 4|002|10kg 5|002|10kg 6|002|10kg 7|003|10kg 8|003|10kg 9|003|10kg Markus
In MySql sollte es eigentlich so gehen: update journalpos j, artikel a set j.GEWICHT=a.GEWICHT where j.ARTNUM=a.ARTNUM; Aber mal zum Verständnis: ist die Menge im Journal immer 1 oder müsste da nicht ein Faktor hin?
Bei mir klappt es leider noch nicht. sqlite> update journalpos j, artikel a set j.GEWICHT=a.GEWICHT where j.ARTNUM=a.ARTNUM; Error: near "j": syntax error Bin etwas am Verzweifeln, der JOIN liefert mir die richtigen Ergebnisse aber... sqlite> select a.GEWICHT FROM artikel a JOIN journalpos j ON a.ARTNUM = j.ARTNUM; 10kg 10kg 10kg 20kg 20kg 20kg 30kg 30kg 30kg der UPDATE schreibt nur 10kg in alle GEWICHTe von journalpos. Irgendwo habe ich noch einen Denkfehler. Markus
Markus W. schrieb: > UPDATE journalpos SET GEWICHT=(select a.GEWICHT FROM journalpos > j JOIN artikel a ON j.ARTNUM = a.ARTNUM);
ThomasW schrieb: > In MySql sollte es eigentlich so gehen: > > update journalpos j, artikel a > set j.GEWICHT=a.GEWICHT > where j.ARTNUM=a.ARTNUM; DAS macht genau das, was ich gesucht habe ! Dankeschön :-D
Dann hat SQLite3 eine etwas andere Syntax wie MySQL. Habe auch was dazu gelernt. Nächsten mal die selbe DBk zum Testen verwenden. Dann ist ja Kirsten geholfen und sie hat was neues gelernt ;-) Markus
Markus W. schrieb: > Dann hat SQLite3 eine etwas andere Syntax wie MySQL. https://www.sqlite.org/lang_update.html#upfrom
Clemens, dem update Schema, siehe PNG, ist ja eine Komma separierte Liste für Tabellennamen zulässig. aber, sqlite> update journalpos j, artikel a set j.GEWICHT=a.GEWICHT where j.ARTNUM=a.ARTNUM; Error: near "j": syntax error siehe den Fehler. Markus
Ohne jetzt alles gelesen zu haben. Das Tool zum Aendern der Datenbank ist phpMyAdmin, Das ist ueblicherweise bei der MariaDB installiert. Das erlaubt haendisch zu editieren.
Hallo, ich möchte auch noch mal darauf hinweisen das in Journalpos die Zeilenposition eines Belegs auftaucht. Dh. das Gewicht muss doch bei mehr als 1ner Artikelanzahl multipliziert werden. Durch das Script wurde nur das Gewicht für 1 Stück Geschrieben. Gruß Sven
Ich möchte darauf hinweisen, dass das Kopieren eines Spaltenwertes aus einer Tabelle in eine Andere klar den Regeln für die Normalformen von Datenbanken widerspricht. Sowas ist grundsätzlich falsch. Und wenn das der Programmierer der DB schon falsch gemacht hat, dann hat er das Attribut Trottel. Das Gewicht eines Artikels kann nur aus der Artikel-Tabelle kommen und nur dort vorhanden sein. https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
Markus W. schrieb: > sqlite> update journalpos j, artikel a set j.GEWICHT=a.GEWICHT where > j.ARTNUM=a.ARTNUM; > Error: near "j": syntax error update journalpos set GEWICHT=a.GEWICHT from artikel a where journalpos.ARTNUM=a.ARTNUM;
:
Bearbeitet durch User
Nick M. schrieb: > Und wenn das der Programmierer der DB schon falsch gemacht hat, dann hat > er das Attribut Trottel. Und was machen wir jetzt mit dieser Information? Es ist ja schön, dass du im Studium gelernt hast, was eine Datenbanknormalisierung ist, und dieses Wissen hier auch wiedergeben kannst. Nur nutzt das hier keinem etwas: - Die Datenbankstruktur ist gegeben, wird live genutzt und kann nicht mal einfach so geändert werden, selbst wenn man wollte (und jemanden hätte, der das machen könnte). - Die Datenbank funktioniert per se; es gibt keinen zwingenden Grund, daran was zu ändern. In der realen Welt da draußen, fern des akademischen Elfenbeinturms, muss solche Software zuallererst funktionieren, weil der Sinn eines Unternehmens ist, Geld zu verdienen. Wie die Datenbanksrruktur aussieht, interessiert absolut niemanden, solange dadurch keine Kosten (Wartungsaufwand, deutlich verlängerte Abfrage-/Ladezeiten usw.) entstehen bzw. vermieden werden können. - Deine Feststellung ist der Anlass des hier beschriebenen Symptoms, ja. Ebenso wurde aber auch schon festgestellt, dass die Software suboptimal, der Support nicht vorhanden und der (einzige?) Entwickler etwas "speziell" ist – was meinst du also, wird passieren, wenn man dem Entwickler nun erklärt, dass sein Datenbankschema Murks ist und dringend geändert werden muss?
Horst G. schrieb: > Und was machen wir jetzt mit dieser Information? Evtl. das nochmal lesen? Kirsten B. schrieb: > Es gibt ein Rechnungsjournal, in welchem sich die ganzen gebuchten > Artikel befinden. > Diesen Artikeln sollen !nachträglich! ein Gewicht zugewiesen werden. > Das Gewicht brauche ich für die Vorlage für die Verpackungsverordnung > beim Lizensierer > und auch zur Gewichtsabrechung laut ElektroG. Es genügt, aus dem Rechnungsjournal die Artikelnummern zu lesen und dann aus der Artikel-Tabelle die Gewichte zu ermitteln. Die Auswertung wurde ja nicht vom ahnungslosen "Profi" gemacht, sondern von einem Anwender, der es auch nicht kann. Horst G. schrieb: > was meinst du also, wird passieren, wenn man dem > Entwickler nun erklärt, dass sein Datenbankschema Murks ist und dringend > geändert werden muss? Dem ist es egal. Den Anwendern nicht. Die können es sich immer noch anders überlegen.
Nick M. schrieb: > Horst G. schrieb: >> Und was machen wir jetzt mit dieser Information? > > Evtl. das nochmal lesen? So wie ich das verstehe, soll die Änderung in der DB von Hand gemacht werden und dann die Liste mit der Original-Software gedruckt werden. Und die liest nunmal das Gewicht aus dem Rechnungsjournal. Ich hatte im Studium auch Vorlesungen im Fach Datenbanken und ich habe in meiner ganzen Zeit als Entwickler noch nicht eine DB gesehen, die dem Optimum entsprochen hätte. (Außer ich hab sie selber angelegt, aber selbst da muss man manchmal Kompromisse machen). merciless
Dirk K. schrieb: > und ich habe in meiner ganzen Zeit als Entwickler noch > nicht eine DB gesehen, die dem Optimum entsprochen hätte. Was durchaus dazu führen kann, dass derjenige danach kein Entwickler mehr für DBen ist.
Nick M. schrieb: > Ich möchte darauf hinweisen, dass das Kopieren eines Spaltenwertes aus > einer Tabelle in eine Andere klar den Regeln für die Normalformen von > Datenbanken widerspricht. Sowas ist grundsätzlich falsch. > Und wenn das der Programmierer der DB schon falsch gemacht hat, dann hat > er das Attribut Trottel. > > Das Gewicht eines Artikels kann nur aus der Artikel-Tabelle kommen und > nur dort vorhanden sein. > > https://de.wikipedia.org/wiki/Normalisierung_(Datenbank) Sorry, aber da liegst du leider falsch. Normalisierung ja. -- ABER NICHT BEI RECHNUNGSRELEVANTEN POSITIONEN ! -- Sinn und Zweck des "Kopierens" dieser Werte ist, dass eine Rechnung auch nach X Jahren noch 1:1 aus der Datenbank erstellt werden kann. Sollte sich in der Zwischenzeit der Artikelstamm geändert haben und Artikel X plötzlich statt 1,2 nun 1,3kg wiegen und statt "Kolossales Meisterwerk" nun "Kolossaler Reinfall" heißen, wäre die Rechnung nicht mehr die Rechnung von vor 2 Jahren. Du verstehst...
Max schrieb: > Sollte > sich in der Zwischenzeit der Artikelstamm geändert haben und Artikel X > plötzlich statt 1,2 nun 1,3kg wiegen Dann hätte er eine andere Artikelnummer. Max schrieb: > wäre die Rechnung nicht mehr die > Rechnung von vor 2 Jahren. Du verstehst... Ich verstehe, dass gestellte Rechnungen in einer anderen Form archiviert werden müssen. Früher hat man Kopien abgeheftet, heute legt man PDFs ab.
Nick M. schrieb: > Dirk K. schrieb: >> und ich habe in meiner ganzen Zeit als Entwickler noch >> nicht eine DB gesehen, die dem Optimum entsprochen hätte. > > Was durchaus dazu führen kann, dass derjenige danach kein Entwickler > mehr für DBen ist. ??? Hast du mal Datenbanken gesehen, die über Jahrzehnte gewachsen sind und produktiv eingesetzt werden? Mal an einem Projekt gearbeitet, dass eine solche DB verwenden/erweitern muss? 90% meiner Tätigkeit hatte ich die Ehre. Und nein, meistens ist es nicht möglich, einfach Änderungen herbeizuführen, weil hunderte andere Applikationen/Skripte auch auf die Daten zugreifen und man nicht alle ändern kann/darf. Komm mal runter von deinem Elfenbeinturm! merciless
Max schrieb: > Nick M. schrieb: >> Ich möchte darauf hinweisen, dass das Kopieren eines Spaltenwertes aus >> einer Tabelle in eine Andere klar den Regeln für die Normalformen von >> Datenbanken widerspricht. Sowas ist grundsätzlich falsch. >> Und wenn das der Programmierer der DB schon falsch gemacht hat, dann hat >> er das Attribut Trottel. >> >> Das Gewicht eines Artikels kann nur aus der Artikel-Tabelle kommen und >> nur dort vorhanden sein. >> >> https://de.wikipedia.org/wiki/Normalisierung_(Datenbank) > > Sorry, aber da liegst du leider falsch. > > Normalisierung ja. -- ABER NICHT BEI RECHNUNGSRELEVANTEN POSITIONEN ! -- > Sinn und Zweck des "Kopierens" dieser Werte ist, dass eine Rechnung auch > nach X Jahren noch 1:1 aus der Datenbank erstellt werden kann. Sollte > sich in der Zwischenzeit der Artikelstamm geändert haben und Artikel X > plötzlich statt 1,2 nun 1,3kg wiegen und statt "Kolossales Meisterwerk" > nun "Kolossaler Reinfall" heißen, wäre die Rechnung nicht mehr die > Rechnung von vor 2 Jahren. Du verstehst... Ja, stimmt, aber deswegen versieht ein SW-Architekt auch Stammdaten mit einer Version inkl. Gültig-Von und Gültig-Bis oder alternativ Status Blocked, Draft, Active, ... (wobei nur eine Version aktiv sein kann) Erst dann kommt man einer Revision-Sicherheit näher. Aber das scheint hier ja eh keinen zu interessieren, wenn man auf DB-Ebene Daten verändert. Da ich im regulierten Umfeld tätig bin, würde ich damit mit einem Bein im Knast stehen, und das ist leider nicht übertrieben.
Nick M. schrieb: > Was durchaus dazu führen kann, dass derjenige danach kein Entwickler > mehr für DBen ist Wenn das so wäre, dann wärst du wahrscheinlich fast der einzige Datenbankentwickler auf der ganzen Welt. Ich bin kein Datenbankprofi, habe aber in den letzten 20 Jahren immer wieder mit Datenbanken zu tun. Da gibts nicht eine, die völlig normalisiert ist. Trotzdem machen wir mit den Produkten zur Zeit 20 Millionen Umsatz pro Jahr, Tendenz steigend, und das seit über 15 Jahren. Was haben wir nur falsch gemacht?
Udo S. schrieb: > Was haben wir nur falsch gemacht? "Funktioniert doch" war schon immer ein "gutes" Argument dagegen etwas richtig zu machen.
@Clemens L. sqlite> update journalpos set GEWICHT=a.GEWICHT from artikel a where journalpos.ARTNUM=a.ARTNUM; Error: near "from": syntax error %-) Markus
JKa schrieb: > Version inkl. Gültig-Von und Gültig-Bis oder alternativ Status > Blocked, Draft, Active Aha. Du hast also viel Erfahrung in der Praxis mit grossen Datenmengen, wo die Abfragezeit eine Rolle spielt ;) leo
UPDATE `journalpos` jp LEFT JOIN `artikel` art ON jp.ARTNUM = art.ARTNUM SET jp.GEWICHT=art.GEWICHT;
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.