php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.12.2010, 19:11  
Gesperrt
 
Registriert seit: 03.12.2010
Beiträge: 860
PHP-Kenntnisse:
Anfänger
coola wird schon bald berühmt werden
Standard [Erledigt] Lock talbes ... As

Hallo, nochmal.

Schon wieder ein Problem.
Code:
LOCK TABLE
   cat               WRITE,
   cat AS node       WRITE,
   cat AS parent     WRITE,
   cat AS subparent WRITE;
liefert:
Zitat:
Table 'node' was not locked with LOCK TABLES
und:
Code:
LOCK TABLE
   cat               WRITE,
   cat AS node       WRITE,
   cat AS parent     WRITE;
liefert:
Zitat:
Table 'subparent' was not locked with LOCK TABLES
Kann man nur maximal 2 AS angeben?
coola ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 04.12.2010, 20:19  
Gesperrt
 
Registriert seit: 03.12.2010
Beiträge: 860
PHP-Kenntnisse:
Anfänger
coola wird schon bald berühmt werden
Standard

2 Stunden lang habe ich im Internet rumgesucht, ob es bei dem LOCK irgendwie ein Limit gibt. Aber jetzt habe ich das Problem gefunden.

Nach dem LOCK TABLES kommt ein SELECT.
Bei dem SELECT habe ich ein SubSelect.

Der SELECT schaute vereinfacht so aus:

Code:
SELECT * FROM
   cat,
   cat AS node,
   (  SELECT * FROM
         cat,
         cat AS node
...
Aber so etwas funktioniert im MySQL in Verbindung mit einem LOCK leider nicht. Ist mir jetzt erst eingefallen, dass LOCK bei SubSelects und UNIONs Probleme hat!

Problem gefunden, Thema hat sich erledigt

Vielleicht noch ein Nachtrag. Problem tritt auf bei
http://dev.mysql.com/tech-resources/...ical-data.html
Code:
SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM nested_category AS node,
	nested_category AS parent,
	nested_category AS sub_parent,
	(
		SELECT node.name, (COUNT(parent.name) - 1) AS depth
		FROM nested_category AS node,
		nested_category AS parent
		WHERE node.lft BETWEEN parent.lft AND parent.rgt
		AND node.name = 'PORTABLE ELECTRONICS'
		GROUP BY node.name
		ORDER BY node.lft
	)AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
	AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
	AND sub_parent.name = sub_tree.name
GROUP BY node.name
ORDER BY node.lft;
Das ist schlecht. Damit gibt es die Probleme. Es müsste heißen:
Code:
SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM nested_category AS node,
	nested_category AS parent,
	nested_category AS sub_parent,
	(
		SELECT s_node.name, (COUNT(s_parent.name) - 1) AS depth
		FROM nested_category AS s_node,
		nested_category AS s_parent
		WHERE s_node.lft BETWEEN s_parent.lft AND s_parent.rgt
		AND s_node.name = 'PORTABLE ELECTRONICS'
		GROUP BY s_node.name
		ORDER BY s_node.lft
	)AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
	AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
	AND sub_parent.name = sub_tree.name
GROUP BY node.name
ORDER BY node.lft;

Geändert von coola (04.12.2010 um 20:23 Uhr).
coola ist offline   Mit Zitat antworten
Alt 04.12.2010, 20:27  
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

Ich würde eher vermuten, dass es daran liegt, dass du den gleichen Tabellennamen mehrfach verwendest ... hast du es mal mit unterschiedlichen Alias-en im Subselect versucht?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 04.12.2010, 20:31  
Gesperrt
 
Registriert seit: 03.12.2010
Beiträge: 860
PHP-Kenntnisse:
Anfänger
coola wird schon bald berühmt werden
Standard

Zitat:
hast du es mal mit unterschiedlichen Alias-en im Subselect versucht
Habe ich ja jetzt gemacht. Das habe ich in meinem vorhergehenden Eintrag noch nachträglich hinzugefügt. Danke
coola ist offline   Mit Zitat antworten
Alt 04.12.2010, 20:55  
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

Also wieder mal ein Problem, das durch aufmerksames Lesen des Manuals gleich von vornherein keins hätte sein müssen ...
http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html - da steht's doch explizit drin.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 04.12.2010, 21:27  
Gesperrt
 
Registriert seit: 03.12.2010
Beiträge: 860
PHP-Kenntnisse:
Anfänger
coola wird schon bald berühmt werden
Standard

Ich kannte das Problem ja. Ich hatte es nur leider kurzzeitig vergessen
coola ist offline   Mit Zitat antworten
Alt 06.12.2010, 00:08  
Gesperrt
 
Registriert seit: 03.12.2010
Beiträge: 860
PHP-Kenntnisse:
Anfänger
coola wird schon bald berühmt werden
Standard

Mir ist bei diesem SELECT übrigens noch etwas aufgefallen. Das Kriterium ist name. Ich glaube, es ist besser, wenn es die id wäre. Die id ist sicher eindeutig. Nur noch so als letzter Kommentar dazu.
coola 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
LOCK tables... Samhayne Datenbanken 41 18.02.2010 11:15
[Erledigt] mysql_insert_id () und LOCK TABLES Senifor PHP Tipps 2009 2 29.10.2009 15:40
Kann LOCK TABLES zu Absturz der MySQL Datenbank führen? kat_2403 Datenbanken 2 03.09.2009 15:22
[Erledigt] datei lock bei file_get_contents DarkPrisma PHP-Fortgeschrittene 4 03.07.2009 22:20
[Erledigt] LOCK TABLES - Thread statt Table??? Curanai Datenbanken 1 04.04.2009 01:33
File-Locking unter Windows bzw. LINUX dr.e. PHP-Fortgeschrittene 9 17.09.2007 23:33
LOCK TABLES / LAST_INSERT_ID AliceD Datenbanken 3 20.07.2005 13:45
logfile schreiben, performance und last PHP-Fortgeschrittene 6 07.10.2004 09:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
was not locked with lock tables, php lock table write

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