Question: Here are some sql tables:

**table USERS**

```
id
1

```

---

**table PROJECTS**

```
id
1

```

---

**table LOCATIONS**

```
id
1
2

```

---

**table USERS\_x\_PROJECTS**

```
id      id_USER      id_PROJECT
1       1            1

```

---

**table USERS\_x\_LOCATIONS**

```
id      id_USER      id_LOCATION
1       1            1

```

---

**table PROJECTS\_x\_LOCATIONS**

```
id      id_PROJECT      id_LOCATION
1       1               1
2       1               2

```

---

Users are linked to Projects. The links between Users and Projects are stored into USERS\_x\_PROJECTS.  
Users and Projects can be linked to Locations. The links are respectively stored into USERS\_x\_LOCATIONS and PROJECTS\_x\_LOCATIONS.

**Now lets say i'm user #1. What i want to do is fetch all projects with their locations where none of the projects's location is matching one of mine.**

**Expected result:**
With the example above, the expected result is to get an empty array because both the user and the only project in the database are linked to the location #1.

**Actual result:** 
I get the project #1

**What i tried:**

```
SELECT
    p.id id,
    GROUP_CONCAT(DISTINCT l.id SEPARATOR "#") l_ids
FROM
    PROJECTS p
LEFT JOIN
    PROJECTS_x_LOCATIONS pl ON pl.id_PROJECT = p.id
LEFT JOIN
    LOCATIONS l ON l.id = pl.id_LOCATION
WHERE
    l.id != 1
GROUP BY
    p.id 

```

Thanks for the help!

Answer: 
Add this ...

```
let position = self.videoDeviceInput.device.position
photoSettings.flashMode = position == .front || position == .unspecified ? .off : .auto

```

right before this ...

```
self.photoOutput.capturePhoto(with: photoSettings, delegate: photoCaptureDelegate)

```

That should fix the problem.
No need to check the camera position, all what we need is to check if the camera has flash of not and according to that we set the flash mode.

```
photoSettings.flashMode = AVCaptureDevice.default(for: AVMediaType.video)!.hasFlash ? .on : .off

```