2017-04-20 1 views
0

--EditMySQL-Abfrage wird nicht korrekt zurückgegeben

Ich bekomme es immer noch nicht aus irgendeinem Grund. Ich werde mehr Details zu meinem Problem geben.

Jobs Tabelle

id, title ... all details 
    1, title1,... 
    2, title2,... 
    3, title3,... 
    4, title4,... 

job_user Tisch

id,id_job,id_user 
1,1,1 
2,2,3 
3,3,3 
4,4,4 

following_job Tisch

id,id_job,id_user 
1, 1, 3 

Also im Grunde Benutzer 3 hat zwei Arbeitsplätze (2,3), und er folgt Job 1 von Benutzer 1. so, wenn ich mich als Benutzer 3 anmelde, möchte ich alle Details Jobs des Benutzers <> 3 (nur die requireme was ich tun muss). ich würde das Ergebnis

id,id_job,id_user 
    1,1,1 
    4,4,4 

Mein Ziel Ergebnisse wären bekommen:

id,title..., following_id 
     1,title1,...,1 
     4,title4,...,0 

die following_id wird oben als Ergebnis hinzugefügt werden, da Benutzer 3 id_job 1 so seine following_id = 1 sonst = 0 folgen. und id_job 1,4 wird mit Arbeitsplätzen Tabelle verknüpft Details über sie zu erhalten: Titel ...

ich die Folge/unfollow Funktionalität Job mache

Dank all

+1

Haben Sie eine Tabelle mit den Job-IDs, nach denen Sie suchen möchten? –

+1

Warum ist es ID 2 für id_job 3 in Ihren Ergebnissen? Die Tabelle assoziiert ID 1 damit. –

+1

Was willst du in der ersten Spalte? Zeilennummer oder was? – Sam

Antwort

3

Typischerweise haben Sie eine zweite Tabelle, die die id_job Werte, die Sie suchen möchten, enthält/Spiel, etwa so:

has_jobs 

id_job | (other columns...) 
2 
3 

Dann könnten Sie einfach has_jobs-following_job verbinden links das Ergebnis zu erhalten Sie wollen:

SELECT t2.id 
     t1.id_job, 
     CASE WHEN t2.id_job IS NULL THEN 0 ELSE 1 END AS following_id 
FROM has_jobs t1 
LEFT JOIN following_job t2 
    ON t1.id_job = t2.id_job 

Wenn Sie nicht über einen tatsächlichen has_jobs Tisch haben, dann könnten Sie eine Inline-Tabelle verwenden statt:

SELECT t2.id 
     t1.id_job, 
     CASE WHEN t2.id_job IS NULL THEN 0 ELSE 1 END AS following_id 
FROM 
(
    SELECT 2 AS id_job 
    UNION ALL 
    SELECT 3 
    -- add more IDs here if wanted 
) t1 
LEFT JOIN following_job t2 
    ON t1.id_job = t2.id_job 
+0

Biegeleisn: Danke für Ihre Antwort. Ich habe versucht, aber kein Glück. Kannst du bitte meinen Post ansehen, den ich bearbeite. Vielen Dank – trinhdh