Vorgeschlagene Personen anzeigen lassen

07/31/2019 01:59 Cc_Cc_Cc#1
Hi Com,

sorry das ich mich wieder zu Wort melde, aber ich zerbreche mir die ganze Zeit den Kopf<.<.

Ich habe eine Tabelle "Vorgeschlagene Personen".

Ich möchte alle Vorgeschlagenen Personen anzeigen, denen ich noch nicht gefolgt habe.

Meine UserID: 20

Tabelle Vorgeschlagene Personen:
id | user_id
1 | 1
2 | 2
3 | 3

Tabelle Follower:
id | user_id | request_id
1 | 20 | 1
2 | 20 | 2

Sozusagen möchte ich jetzt User 3 anzeigen lassen, da ich den nicht folge.

Bei mir passiert es andersrum beim Code. Ich lasse alle anzeigen denen ich Folge...


Habe auch das probiert:

Aber nichts funktoniert. Hab noch vieles weiteres probiert, aber alles war ein Misserfolg.
07/31/2019 03:10 Mikesch01#2
Anstatt "!=" musst du "<>" benutzen. In SQL ist ungleich anders.

Aber an sich ist dein Problem ein anderes. Du musst eine Menge in einer anderen Menge ausschließen. Hierfür musst du verschachtelte Abfragen machen.

Code:
SELECT 
recommendation.user_id AS rid,
follow_people.user_id,
follow_people.request_id
FROM recommendation
WHERE recommendation.user_id NOT IN(
  SELECT user_id
  FROM recommendation
  LEFT JOIN follow_people ON follow_people.request_id = recommendation.user_id
  WHERE follow_people.user_id = :session_id 
)
Der Select im WHERE-Teil sucht alle user_id's in der Tabelle der vorgeschlagenen Benutzer heraus die bereits in der Tabelle der Follower sind. (Das wären bspw. die IDs 1 und 2).

Der erste Select sucht nun alle Einträge die nicht die vorher definierten IDs beinhalten. Also bleibt nur noch 3 übrig, weil 1 und 2 ausgeschlossen werden.
07/31/2019 14:57 Cc_Cc_Cc#3
Danke dir hat geklappt und danke für die ausführliche Erklärung :)