SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.10.2010, 16:44:05
-sensemann- -sensemann- ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 58
Beiträge: 37
Update

Hallo, hab mal wieder ein Problem und finde nichts dazu bzw. krieg es nicht geregelt.

Ich möchte aus einer Tabelle products die Spalteproducts_userfield_8 auslesen und damit die Spalte options_preis in einer anderen Tabelle updaten. Beide Tabellen haben eine Spalte products_id
welche zum gleichen Datensatz gehören.

PHP-Code:
UPDATE products_attributes
SET options_values_price select products_userfield_8 from products WHERE products_id
=products_id 
Ist warscheinlich fürchterlich falsch !

Kann jemand helfen bitte !

Gruß
sensemann
Mit Zitat antworten
  #2  
Alt 22.10.2010, 19:35:56
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Update

Eine Lösung könnte in etwa so aussehen (sofern kein Tippfehler drin ist)

Code:
UPDATE products_attributes pa
   SET pa.options_values_price = ( SELECT products_userfield_8 
                                     FROM products 
                                    WHERE products_id = pa.products_id  )
Der Sub-Select (in der Klammer) darf nicht mehr als einen Wert liefern (einen Datensatz finden). Damit der UPDATE korrekt funktioniert.

Probiere das Ganze mal mit einer Test-Datenbank.

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #3  
Alt 22.10.2010, 21:39:54
-sensemann- -sensemann- ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 58
Beiträge: 37
AW: Update

Und wenn es mehr als eine Wert liefert ? Mach mach ich dann ?

#1242 - Subquery returns more than 1 row

Deine Abfrage bei einem Wert funktioniert gut. Danke !
Mit Zitat antworten
  #4  
Alt 22.10.2010, 22:04:09
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Update

So umformen, dass sie nur einen Wert liefert.
Oder willst du mehrere Werte in einer Zelle unter bringen?
Mit Zitat antworten
  #5  
Alt 23.10.2010, 08:41:48
-sensemann- -sensemann- ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 58
Beiträge: 37
AW: Update

Wenn ich den Fehler richtig nachgelesen habe muss noch irgendwo ein ANY hin.
Ist das richtig ?
Mit Zitat antworten
  #6  
Alt 23.10.2010, 09:03:06
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Update

Zitat:
Zitat von -sensemann- Beitrag anzeigen
Wenn ich den Fehler richtig nachgelesen habe muss noch irgendwo ein ANY hin.
Ist das richtig ?
Ja und Nein!

Ja wenn Du nur ein SELECT machen würdest (siehe dazu hier).

Nein, denn Du möchtest ja ein Update machen. Dazu brauchst Du aber nur genau einen Wert aus Deiner zweiten Tabelle. Oder willst Du jeden gefundenen Wert aus Deiner zweiten Tabelle in Deine erste Tabelle schreiben.

Zum besseren Testen bräuchten wir folgendes:

Code:
mysql>SHOW CREATE TABLE products_attributes;
mysql>SHOW CREATE TABLE products_userfield_8;
Und natürlich eine paar Testdaten je Tabelle.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #7  
Alt 23.10.2010, 09:38:05
-sensemann- -sensemann- ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 58
Beiträge: 37
AW: Update

Also erst einmal hatte ich einen Denkfehler mit der zuordnung.

Die Abfrage:
PHP-Code:
UPDATE products_attributes pa
   SET pa
.options_values_price = ( SELECT products_userfield_8 
                                     FROM products 
                                    WHERE products_id 
pa.products_id  
muss eigendlich so heißen:
PHP-Code:
UPDATE products_attributes pa
   SET pa
.options_values_price = ( SELECT products_userfield_8 
                                     FROM products 
                                    WHERE products_model 
pa.bestellnummer  
In der Tabelle products gibt es eine Spalte products_model mit einer 6 stelligen Nummer.
Diese Nummern stehen auch in der Tabelle products_attributes in der Spalte bestellnummer.
Jetzt möchte ich aus der Tabelle products den Wert der in der Spalte products_userfield_8 steht in die Spalte .options_values_price der Tabelle products_attributes übertragen wenn die Werte der Spalten products_model und bestellnummer übereinstimmen.
Ob das ganze jetz einen Wert oder mehr liefert kann ich irgendwie noch nicht nachvollziehen.

SHOW CREATE TABLE products_attributes; liefert dies:

Table Create Table
products_attributes CREATE TABLE `products_attributes` (\n `products_a...

SHOW CREATE TABLE products; liefert dies:

Table Create Table
products CREATE TABLE `products` (\n `products_id` int(11) ...

Gruß
sensemann
Mit Zitat antworten
  #8  
Alt 23.10.2010, 10:09:11
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Update

Zitat:
Zitat von -sensemann- Beitrag anzeigen
Ob das ganze jetz einen Wert oder mehr liefert kann ich irgendwie noch nicht nachvollziehen.
Wer außer Dir soll es denn dann wissen/nachvollziehen können?


Zitat:
Zitat von -sensemann- Beitrag anzeigen
[..]
SHOW CREATE TABLE products_attributes; liefert dies:

Table Create Table
products_attributes CREATE TABLE `products_attributes` (\n `products_a...

SHOW CREATE TABLE products; liefert dies:

Table Create Table
products CREATE TABLE `products` (\n `products_id` int(11) ...
Bitte vollständig posten!
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #9  
Alt 23.10.2010, 10:18:08
-sensemann- -sensemann- ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 58
Beiträge: 37
AW: Update

In phpmyadmin bekomme ich nicht mehr angezeigt. Muss ich das per Script abfragen ?
Mit Zitat antworten
  #10  
Alt 23.10.2010, 10:21:24
-sensemann- -sensemann- ist offline
Anfänger
 
Registriert seit: Sep 2010
Alter: 58
Beiträge: 37
AW: Update

Habs gefunden:

CREATE TABLE `products` (
`products_id` int(11) NOT NULL auto_increment,
`products_quantity` int(4) NOT NULL default '0',
`products_model` varchar(12) default NULL,
`products_image` varchar(64) default NULL,
`products_image_medium` varchar(64) NOT NULL default '',
`products_image_large` varchar(64) NOT NULL default '',
`products_price` decimal(15,4) NOT NULL default '0.0000',
`products_date_added` datetime NOT NULL default '0000-00-00 00:00:00',
`products_last_modified` datetime default NULL,
`products_date_available` datetime default NULL,
`products_weight` decimal(5,2) NOT NULL default '0.00',
`products_status` tinyint(1) NOT NULL default '0',
`products_tax_class_id` int(11) NOT NULL default '0',
`manufacturers_id` int(11) default NULL,
`products_ordered` int(11) NOT NULL default '0',
`products_price_pref` tinyint(1) NOT NULL default '0',
`products_family` varchar(64) NOT NULL default '',
`v_order` tinyint(3) unsigned NOT NULL default '0',
`products_ean` varchar(13) NOT NULL default '',
`products_userfield_1` varchar(255) NOT NULL default '',
`products_userfield_2` varchar(255) NOT NULL default '',
`products_userfield_3` varchar(255) NOT NULL default '',
`products_userfield_4` varchar(255) NOT NULL default '',
`products_userfield_5` varchar(255) NOT NULL default '',
`products_userfield_6` varchar(255) NOT NULL default '',
`products_userfield_7` varchar(255) NOT NULL default '',
`products_userfield_8` varchar(255) NOT NULL default '',
`products_userfield_9` varchar(255) NOT NULL default '',
`products_userfield_10` varchar(255) NOT NULL default '',
`zwischenablage_userfeld_2` text NOT NULL,
`rec_id` int(11) NOT NULL default '0',
PRIMARY KEY (`products_id`),
KEY `idx_products_model` (`products_model`),
KEY `idx_products_date_added` (`products_date_added`)
) ENGINE=MyISAM AUTO_INCREMENT=9237 DEFAULT CHARSET=latin1

PHP-Code:
CREATE TABLE `products_attributes` (n  `products_attributes_idint(11NOT NULL auto_increment,n  `products_idint(11NOT NULL default '0',n  `options_idint(11NOT NULL default '0',n  `options_values_idint(11NOT NULL default '0',n  `options_values_pricedecimal(15,4NOT NULL default '0.0000',n  `price_prefixchar(1NOT NULL default '+',n  `bestellnummervarchar(15NOT NULL default '',n  PRIMARY KEY  (`products_attributes_id`),n  KEY `idx_products_attributes_products_id` (`products_id`)nENGINE=MyISAM AUTO_INCREMENT=14180 DEFAULT CHARSET=latin1 

Geändert von vt1816 (23.10.2010 um 10:40:36 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql update und neue daten in eine andere Tabelle eintragen cooperraser MySQLi/PDO/(MySQL) 5 12.10.2008 02:46:35
UPDATE im Block plekz MySQLi/PDO/(MySQL) 1 12.08.2008 11:43:03
UPDATE funktioniert nicht!! Haudenlukas MySQLi/PDO/(MySQL) 2 04.06.2008 10:10:21
Leeres Resultat? Sk3y MySQLi/PDO/(MySQL) 10 13.11.2006 18:57:40
UPDATE und SELECT MrLongbaugh MySQLi/PDO/(MySQL) 2 20.07.2006 12:27:50


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt