php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.11.2007, 02:11  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard Update und Subselect

Hoi

Ich mache gerade ein UPDATE statement und dieses soll einen Subselect beinhalten.
Es soll folder_pic auf die höchste photo_id setzen, die das Kriterium besitzt, dass es eine bestimmte folder_id hat.

Nun ja kein Problem , dachte ich und so etwas ist ja sehr sehr schnell geschrieben.

PHP-Code:
mysql_query("UPDATE gallerie_folder
                    SET folder_pic = (SELECT MAX(photo_id)
                                             FROM gallerie_photos
                                             WHERE photo_folder = '"
$folder_id ."')
                    WHERE folder_id = '"
$folder_id ."'"); 
Nur leider änderts ich dort der folder_pic Wert nicht.
Mache ich dies ohne den Where Teil im Subselect funktioniert alles tadellos.
Nur eben leider nicht mit Where.

Führe ich den Subselect als eigenen Query aus funktioniert auch alles wunderbar.
Es passt alles eben nur nicht wenn es als Subselekt drin ist.

Woran kann es liegen bzw. wie kann ich das am besten machen ?


Gruß Simon
__________________
Der G-Translator
Simon9990 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.11.2007, 14:55  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich vermute, dass du für die Änderungsabfrage von einem Subselect auf die Elemente des übergeordneten Selects zugreifst.
Zitat:
Zitat von [url=http://dev.mysql.com/doc/refman/5.1/de/subqueries.html
Syntax von Unterabfragen[/url]]Eine weitere Einschränkung ist die Tatsache, dass Sie eine Tabelle derzeit nicht ändern und gleichzeitig in einer Unterabfrage eine Auswahl aus dieser Tabelle treffen können.
Sicher weiss ich das natürlich nicht, da ich deine DB-Struktur nicht kenne
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 12.11.2007, 23:11  
Erfahrener Benutzer
 
Registriert seit: 16.05.2004
Beiträge: 369
Simon9990
Standard

Hallo @lazydog

Nein es sind zwei verschiedene Tabellen.
Die in der der Wert geändert werden soll ist gallerie_folder
und die von der der HÖCHSTE photo_id Wert ausgelesen werden soll ist gallerie_photos, wobei die folder_id aus einer vor dem query definierten Variable stammt.

Gruß Simon
__________________
Der G-Translator
Simon9990 ist offline   Mit Zitat antworten
Alt 13.11.2007, 00:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Bei mir klappts:
Code:
CREATE TABLE `gallerie_folder` (
  `folder_id` int(11) NOT NULL auto_increment,
  `name` varchar(10) collate latin1_general_ci NOT NULL,
  `folder_pic` int(11) NOT NULL,
  PRIMARY KEY  (`folder_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ;

INSERT INTO `gallerie_folder` (`folder_id`, `name`, `folder_pic`) VALUES 
(1, 'new york', 0),
(2, 'toronto', 0);

CREATE TABLE `gallerie_photos` (
  `photo_id` int(11) NOT NULL auto_increment,
  `name` varchar(10) collate latin1_general_ci NOT NULL,
  `photo_folder` int(11) NOT NULL,
  PRIMARY KEY  (`photo_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ;

INSERT INTO `gallerie_photos` (`photo_id`, `name`, `photo_folder`) VALUES 
(1, 'WTC', 1),
(2, 'Freiheitss', 1),
(3, 'Platz 1', 2),
(4, 'Platz 2', 2),
(5, 'Platz 3', 2),
(6, 'Platz 4', 2);
Wenn du das UPDATE jetzt mit $folder_id = 1 bzw. 2 durchführst wird New York's folder_pic 2, Toronto's 6. So wie es sein soll.

Bitte mal 5 Minuten debuggen bevor du postest ..

Übrigens: Arbeit mal an deiner Namenskonvention.
Gallerie, Photo, Folder .. Englisch oder Deutsch nun?
Photos, folder, .. Mehrzahl, Einzahl, ..?
Pic, Photo, .. vielleicht noch Image?

Entscheid dich mal!
Zergling-new ist offline   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
Update / syntaxfehler prinzli Datenbanken 7 24.11.2007 21:24
INSERT.. ON DUPLICATE KEY UPDATE cycap Datenbanken 3 26.10.2007 13:08
UPDATE mit Subquery cycap Datenbanken 6 27.09.2007 14:25
zwei SQL-Befehle (SELECT UND UPDATE) auf einmal vollziehen. Datenbanken 3 09.03.2006 16:34
[Erledigt] UPDATE und Subselect??? Datenbanken 2 31.01.2006 19:06
UPDATE count nach Link Aufruf ? PHP Tipps 2006 9 22.01.2006 14:53
mysql problem: mysql update wird nicht ausgeführt schmiddy PHP Tipps 2007 4 27.12.2005 20:35
per Update eine zahl ehöhen lassen Datenbanken 3 04.07.2005 16:37
Update in mysql funzt nicht maeck PHP Tipps 2005-2 4 27.06.2005 22:52
Update per Cronjob (where Feld = Wort) Apfeltyp PHP Tipps 2004-2 3 14.12.2004 18:25
durchlauf,zeile für zeile + update Skazi Datenbanken 10 25.11.2004 13:59
UPDATE Problem 2wuck Datenbanken 3 19.11.2004 22:05
[Erledigt] UPDATE mit ' im Text Datenbanken 2 09.11.2004 20:07
[Erledigt] UPDATE = NO Update aber kein fehler..dringend hilfe suchend Datenbanken 2 25.09.2004 16:28
php update PHP Tipps 2004 2 24.09.2004 01:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql update subselect, mysql update subselect, update subselect, update mit subselect, sql update mit subselect, mysql update mit subselect, update sql subselect, update with subselect, mysql subselect update, sql update with subselect, subselect update, update set subselect, mysql update with subselect, update subselect mysql, subselect in update, sql subselect update, sql update select, update where subselect, subselect mysql update, folder mehrzahl

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:00 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.