Zur Navigation

Eine Abfrage - zwei Tabellen

-

1 User 794 (Ex-Mitglied)

Schönen guten Abend!

Ich stehe vor folgendem Problem und hoffe auf eure Hilfe: Aus Übungszwecken und natürlich weil es sehr nützlich ist, habe ich mir einen Vokabeltrainer programmiert. Er ist mittlerweile recht umfangreich und ich möchte es nun so machen, dass man seine eigenen Kategorien veröffentlichen kann. Dafür wählt man beim Erstellen einer Kategorie "öffentlich" oder "nicht öffentlich" und entscheidet somit selbst darüber, ob die eigenen Kategorien von anderen Mitgliedern nutzbar sind oder nicht. Auf die öffentlichen Kategorien soll dann über eine Suche zugegriffen werden können. Dabei soll man einmal nach dem Namen und der Beschreibung bestimmter Kategorien und natürlich auch nach den Kategorien einzelner Nutzer suchen können. Genau dabei tue ich mich allerdings sehr schwer. Wie kann ich die Abfrage am besten gestalten? Die Struktur meiner Tabellen sieht momentan wie folgt aus (unwichtige Spalten habe ich dabei nicht berücksichtigt):

user
---
id
username

categories
---
id
user_id
status
name
description

Wenn ich nun einen Suchbegriff eingebe, muss also einmal in der Tabelle "user" nach "username" und dann in der Tabelle "categories" nach "name" und "description" gesucht werden. Kann ich das über eine entsprechende Abfrage besonders leicht realisieren? Ich las vor kurzem etwas von "JOIN", konnte damit aber nicht besonders viel anfangen. Vielleicht wisst ihr ja mehr darüber!

Ich freue mich über jede Art von Hilfe und bedanke mich schon mal im Voraus! :)

PS: Über sonstige Tipps und Verbesserungsvorschläge (zum Beispiel zur Struktur meiner Tabellen) wäre ich natürlich auch sehr erfreut!

15.05.2009 21:41 | geändert: 15.05.2009 21:43

2 Jörg Kruse

Ja, mit einer JOIN Abfrage kann man Abfragen über mehrere Tabellen stellen. So könnte eine LEFT JOIN Abfrage ausschauen, die nach den Kategorien eines Users sucht (ungestestet):

SELECT categories.name, categories.description
FROM categories LEFT JOIN user ON categories.user_id = user.id
WHERE categories.status = 'public' AND user.name LIKE '%Pastewko%';

"ON categories.user_id = user.id" stellt hierbei die notwendige Verknüpfung zwischen Schlüssel und Fremdschlüssel her

15.05.2009 21:54 | geändert: 15.05.2009 21:56

3 User 794 (Ex-Mitglied)

Klasse! Genau nach so etwas habe ich gesucht. Vielen Dank, Jörg!

Gibt es denn auch RIGHT oder was soll das LEFT bedeuten? Bezieht es sich nicht auf die Richtung?

15.05.2009 22:28

5 User 794 (Ex-Mitglied)

Danke für diesen Link!

16.05.2009 11:34

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]