Gebe NULL aus wenn zu dieser id in einer anderen tabelle nichts zu der id gefunden wurde

Th3RaZe

Aktiver Benutzer
Beiträge
37
Guten Abend,

Ich zerbreche mir seit einigen Stunden den Kopf darüber. Ich programmiere eine App, dort drin kann man content von usern bewerten, wenn ich ein content bewertet habe schreibe ich das in eine anderen Tabelle, dort kommt dann folgendes rein: content_id (id von dem was ich gerade bewertet habe) user_id (id vom bewerter) und likeordis (1=like 2=dislike).

Wenn ich dann die App schließe und diese wieder öffne will ich, dass man sieht was man schon bewertet hat.
Mein Problem ist, dass ich nicht weiß wie ich die Abfrage gestalten soll, denn in der anderen Tabelle existiert erst dann ein Eintrag, wenn ich bewertet habe. Ich habe schon ein wenig mit JOINS gespielt, habe aber nie mein Ergebnis erlangt.

so sieht meine Aktuelle abfrage aus ohne die 2. Tabelle:

Code:
SELECT * FROM content WHERE city=? ORDER BY create2 DESC

Ich hoffe Ihr könnt mit meiner Beschreibung etwas anfangen.

Greetings
 
Werbung:
so sieht meine Aktuelle abfrage aus ohne die 2. Tabelle:

Wie seht denn Deine aktuelle Abfrage mit der 2. Tabelle aus? Wie sehen die beteiligten Tabellen denn überhaupt aus? Um Dir eine Antwort zu geben, wie die Abfrage denn aussehen sollte, wären dies elementar wichtige Angaben und es fällt mir grad schwer, diese vollständig und korrekt zu erraten.
 
Hallo,

1. Tabelle: ID, Content, user_id, city, create2
2. Tabelle: content_id, user_id, likeordis

Eine Abfrage zur 2. Tabelle habe ich nicht, aktuell prüfe ich erst ob er schon bewertet hat, wenn er bewerten will. Dort sieht die Abfrage folgendermaßen aus:

Code:
SELECT COUNT(content_id) FROM votings WHERE content_id=? AND user_id=?

Ich checke eigentlich nur ob es einen Eintrag gibt, der die Bedingung erfüllt.

Mein Ziel ist es, schon bei der 1. Abfrage die 2. Abfrage zu machen, zu kombinieren, wenn es in der 2. Tabelle noch keinen Eintrag gibt, gebe NULL aus, wenn doch, dann lese likeordis aus.
 
Habs hinbekommen.

Code:
SELECT * FROM content   LEFT JOIN votings ON id = content_id AND votings.user_id=? WHERE city=?  ORDER BY create2 DESC LIMIT 5;
 
Aber was noch schön wäre, wäre es wie man das noch Optimieren kann, ich bekomme leider noch die user_id und content_id von der Tabelle2 zurückgeliefert, aber genau diese beiden benötige ich nicht.
 
Tabelle1 = content Tabelle2 = votings

Sorry, mein Fehler. Die SELECT * gibt mir von Tabelle1 alle Spalten wieder, aber wie kann ich bei dem JOIN sagen das ich von der Tabelle2 nicht alle spalten haben will?
 
Dann bekomme ich dennoch von Tabelle2 alle spalten wieder. Was ich von Tabelle2 nur benötige ist die Spalte "likeordis"
Code:
LEFT JOIN votings ON id = content_id AND votings.user_id=?
Spalte: content_id und user_id will ich nicht zurückliefern, dass wäre nur unnötiger Traffic beim enduser. die beiden Spalten brauche ich nur um es zuweisen zu können.
 

Anhänge

  • result.JPG
    result.JPG
    17,8 KB · Aufrufe: 1
Werbung:
Zurück
Oben