[MySQL] Alias ob Zuweisung mit Datensatz in anderer Tabelle vorhande

dsturm

Erfahrenes Mitglied
Hallo,

ich habe derzeit ein Problem bei der Konzeption einer Abfrage. Ich möchte einen Datensatz ausgegeben bekommen, welcher mir ein Attribut mitgibt, ob diesem Datensatz in einer n-m Tabelle ein bestimmter Datensatz zugewiesen wurde, oder nicht.

Beispiel:
Code:
SELECT `u`.`user_id`, `u`.`user_email`
FROM `user_data` `u`
LEFT JOIN `user_to_object` `uo` ON `u`.`user_id` = `uo`.`user_id`
WHERE `uo`.`object_id` = 1

Hierbei würden mir alle Nutzer, welchen das Objekt mit der ID 1 zugewiesen wurde, zurückgegeben. Ich möchte aber alle Nutzer zurückgegeben bekommen, und zusätzlich ein Wert, ob diesem Nutzer Objekt 1 zugewiesen wurde oder nicht.

Leider finde ich die Lösung dafür nicht; sieht einer einen Weg für mein Problem?

Gruß,
Daniel
 
Code:
SELECT count(*)
FROM `user_data` `u`
LEFT JOIN `user_to_object` `uo` ON `u`.`user_id` = `uo`.`user_id`
WHERE `uo`.`object_id` = 1

Liefert dir die anzahl... um alle User zu bekommen musst du dann nur noch folgendes abfragen:

Code:
SELECT *
FROM `user_data` `u`
 
Hmm, danke dir für die Antwort. Allerdings glaube ich, wir reden aneinander vorbei ^^

Ich möchte nicht die Anzahl aller Nutzer erfahren, sondern in einem Query eine Ausgabe aller Nutzer + Angabe (zB. als boolean) ob einem Nutzer das Objekt mit der ID 1 in einer weiteren Tabelle zugeordnet wurde oder nicht.

Mein bisheriger Ansatz sieht so aus:
Code:
SELECT `u`.`user_id`, `u`.`user_email`, IF(`uo`.`object_id`!=1,0,1) AS `user_object_status`
FROM `user_data` `u`
LEFT JOIN `user_to_object` `uo` ON `u`.`user_id` = `uo`.`user_id`
WHERE (
  `uo`.`object_id` = 1 ||
  `uo`.`user_id` NOT IN (
    SELECT `user_id` FROM `user_to_object` WHERE `object_id` = 1
  )
)

Allerdings beinhaltet dieser eine, vielleicht unnötige, SubQuery.

Gruß und Dank,
Daniel
 
Zurück