Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
SQL Sicht [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
SQL Sicht


 
dimo
30-01-2002, 19:05 
 
Hallo
Ich habe ein Problem ich bin SQL-Anfänger. Nein.
Mein Problem ist ich möchte ein indirekte Abfrage
von der Relation_DOC machen.
Relation_DOC: Ist eine Relation für Dokumente sie
enthält die Attribute: Id_key, Name, Type, etc.

|ID|Name|Type|
|1 |doc1|xyx |
|2 |doc2|zzz |
|3 |doc3|yyy |

Relation_Child: Enthält die Kinder Dokumente für die
Eltern Dokumente(von Relation_DOC) mit den Attribute:
ID_key, Parent_ID, Child_ID.

|ID|Parent_ID|Child_ID|
|1 |1 |2 |
|2 |1 |3 |
|3 |3 |1 |
|4 |2 |1 |

Ich möchte nun eine WHERE (SQL) Sicht machen in dem
ich anhand der Parent_ID in der Relation_Child, Kinder
Dokumente in der Relation_DOC suche.

Ach so, ich muss den SQL Server 2000 von Microsoft benutzen.
Wer könnte mir helfen?

Gruß
Dimo

 
iQD
30-01-2002, 19:32 
 
Hi!

$parent_id; // wäre die Parent_ID für die alle childs gesucht werden müssen


CREATE VIEW docs AS
SELECT *
FROM Relation_DOC as docs, Relation_Child as childs
WHERE childs.Parent_ID = $parent_id
AND childs.Child_ID = docs.ID;

SELECT * FROM docs;


Grüsse

[Editiert von iQD am 30-01-2002 um 19:35]

 
Sky
30-01-2002, 19:41 
 
Wär's nicht besser mit (betreffender Teilausschnitt):
SELECT *
FROM Relation_DOC as docs STRAIGHT JOIN Relation_Child as childs ON childs.Child_ID = docs.ID WHERE childs.Parent_ID = $parent_id;

?

 
iQD
30-01-2002, 19:59 
 
Naja Der EQUI-JOIN is der Standardjoin. Und der STRAIGHT-JOIN ist der EQUI-JOIN(nur mit dem Unterschied die linke Tabelle vor der rechten auszulesen), daher nur in einigen Ausnahmen sinnvoll.


Dies kann dazu benutzt werden, wenn der JOIN Optimizer die Tabellen in der falschen Reihenfolge ausgibt (in seltenen Fällen).


Also nur sinnvoll in Verbindung mit dem JOIN Optimizer. Kann bei komplizierten Tabellen was bringen, aber bei diesen einfachen Strukturen wirds nicht viel an Speed bringen.

Aber hast natürlich recht, wenns auch nix bringt, is es immer besser es trotzdem rein zu nehmen.

Wenns was bringt schön, wenns nix bringt hat mas wenigstens probiert und schadet keinem. :D

[Editiert von iQD am 30-01-2002 um 20:09]

 
Sky
30-01-2002, 20:06 
 
Schon klar, aber ich denke im Sinne der Angewöhnung eines guten Query-Stils sollte man es immer so halten - außerdem ist dann der Weg zu einem LEFT JOIN nicht mehr weit ;)

 
iQD
30-01-2002, 20:11 
 
Wo er recht hat, hat er recht :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:33 Uhr.