2016-04-20 5 views
0

Ich hoffe, das man relativ einfach ist, zu lösen, aber hier ist das Problem, das ich mit konfrontiert bin:Wie kann ich eine einzelne Zeile sowie multple Einträge Rückkehr mit Group_concat in MySQL

SQL Query:

Die Abfrage gibt nur die Einträge zurück, in denen die Tabelle job_position_type mehrere Einträge enthält und nicht, wenn job_position_type nur einen einzelnen Eintrag enthält.

Cheers,

Tim

+0

Können Sie etwas genauer erklären, was Sie konkret tun möchten? –

+0

@Adrien Brunelat danke für Ihren Kommentar, aber es scheint, als ob alles, was ich tun musste, war, eine GROUP BY-Klausel am Ende meiner SQL-Anweisung hinzuzufügen. –

+1

Dann sollten Sie in Betracht ziehen, dies entweder als Antwort zu posten oder Ihren Beitrag zu löschen. –

Antwort

0

OK so konnte ich ziemlich leicht, mein Problem zu klären, hier tatsächlich, meine ursprüngliche SQL, wie oben angegeben ist:

SELECT 
    job.job_id 
    ,job_reference 
    ,job_title 
    ,jc.name as job_category_name 
    ,ps.name as position_status_name 
    ,group_concat(pt.name ORDER BY pt.position_type_id SEPARATOR '/') as position_type_name 
    ,cty.name as city_name 
    ,min.amount as min_salary 
    ,max.amount as max_salary 
    ,job_description 
    ,skills_required 
    ,additional_notes 
FROM job 
INNER JOIN job_category jc ON job.job_category_id = jc.job_category_id 
INNER JOIN position_status ps ON job.position_status_id = ps.position_status_id 
INNER JOIN job_position_type jpt ON job.job_id = jpt.job_id 
INNER JOIN position_type pt ON jpt.position_type_id = pt.position_type_id 
INNER JOIN city cty ON job.city_id = cty.city_id 
INNER JOIN salary min ON job.min_salary_id = min.salary_id 
INNER JOIN salary max ON job.max_salary_id = max.salary_id; 

Und das ist, was die Abfrage Rückgabe:

Position type name displaying all concatenated rows

Und die Lösung nur eine Gruppe von Klausel hinzufügen, so dass es die Zeilen seperates, hier ist mein Update SQL:

SELECT 
    job.job_id 
    ,job_reference 
    ,job_title 
    ,jc.name as job_category_name 
    ,ps.name as position_status_name 
    ,group_concat(pt.name ORDER BY pt.position_type_id SEPARATOR '/') as position_type_name 
    ,cty.name as city_name 
    ,min.amount as min_salary 
    ,max.amount as max_salary 
    ,job_description 
    ,skills_required 
    ,additional_notes 
FROM job 
INNER JOIN job_category jc ON job.job_category_id = jc.job_category_id 
INNER JOIN position_status ps ON job.position_status_id = ps.position_status_id 
INNER JOIN job_position_type jpt ON job.job_id = jpt.job_id 
INNER JOIN position_type pt ON jpt.position_type_id = pt.position_type_id 
INNER JOIN city cty ON job.city_id = cty.city_id 
INNER JOIN salary min ON job.min_salary_id = min.salary_id 
INNER JOIN salary max ON job.max_salary_id = max.salary_id 
GROUP BY pt.position_type_id; 

Und hier ist das erwartete Ergebnis ich wollte:

Position type id grouped by position type id

Dank noch einmal zu @Adrien Brunelat für einen Blick auf meine Frage.

Verwandte Themen