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)
Differenzmenge aus zwei Tabellen? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Differenzmenge aus zwei Tabellen?


 
tomschrot
24-11-2003, 11:27 
 
Hallo,

trotz suche hab ich leider nichts gefunden :(
-vielleicht kann mir ja jemand weiterhelfen? Also:

Ich habe 2 Tabellen, die eine entält eine ungeordnete Liste von Dateien die gespeichert sind plus zusätzliche Infos als Text. ungefär so:

Files: [id][name][text]

Eine zweite Tabelle referenziert diese Liste, wobei mehrfach nennung möglich ist:

Ref: [id][contentid][fileid]...

Damit werden nun Inhalte (Dateien) wie folgt aufgelöst:

Files:
1, File1.txt, Datei 1
2, Bild1.jpg, Bild 1
3, Doc1.doc, Dokument 1
4, File2.txt, Datei 2
.....usw.

Ref:
1, 1, 1
2, 1, 3
3, 1, 4
4, 2, 1
5, 3, 4

wer genau hinschaut sieht, das Eintrag Files 2 in der Referenz nicht vorkommt. Und hier liegt (mein) Hund begraben. Ab und zu möchte ich die Files-Tabelle aufräumen und alle wegschmeissen die nicht(!!) in der Referenz vorkommen. Also eben die Differenzenge löschen. Hab schon probiert, klappt aber nicht.

Wer hilft?

 
Abraxax
24-11-2003, 11:30 
 
check das mal....
SELECT
*
FROM
Ref R
RIGHT JOIN Files F ON R.fileid = F.id
WHERE
R.fileid = NULL

 
tomschrot
24-11-2003, 11:43 
 
Leider nein, da in Ref keine leeren Einträge für fileid vorhanden sind :(

(habs grad mal probiert und bekomme eine leere zeile zurück)

 
Abraxax
24-11-2003, 11:47 
 
Original geschrieben von tomschrot
(habs grad mal probiert und bekomme eine leere zeile zurück) das war eigentlich auch mein wunsch .... :D

du solltest damit einen datensatz erhalten, der bei files.id eine 2 hat und bei red.fileid ein NULL gibt.

ansonsten warte mal, bis happy hier vorbei schaut... :D

 
tomschrot
24-11-2003, 12:01 
 
Aha! Manchmal brauchts nur einen kleinen Anstoss um die gewünschte Lösung zu finden. (so was nennt man betiebsblind)

Wenn ich deinen Vorschlag umdrehe gehts:

SELECT files.* FROM files
LEFT JOIN ref
ON files.id = ref.fileid
WHERE ref.fileid IS NULL

geht!

Erstmal vielen Dank! :D

 
Abraxax
24-11-2003, 12:08 
 
Original geschrieben von tomschrot
Wenn ich deinen Vorschlag umdrehe gehts: jepp. das wäre mein zweiter ansatz gewesen. wollte ihn aber nicht posten, da meiner meinung nach das prinzip eh das gleiche gewesen ist... ;)

aber wenn es nun passt, ist die welt ja supergrün... :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:03 Uhr.