---
title: "Hämta bara om det existerar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/47763-hämta-bara-om-det-existerar"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Jetboy"
published: "2002-07-12T12:50:11.000Z"
updated: "2002-07-12T15:36:46.000Z"
replies: 3
views: 216
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/47763-hämta-bara-om-det-existerar"
---

# Hämta bara om det existerar

## #1 — Jetboy, 2002-07-12T12:50Z

Jag har en databas med tre tabeller **tbl_users, tbl_a** och **tbl_b**. Den förstnämnda tabellen innehåller användare, och de två övriga är tabeller för sådant som användarna själva kan lägga till. Tabellerna är länkade enligt **tbl_users.us_id = tbl_a.a_id = tbl_b.b_id**. Bland fälten i tabellerna finns också **tbl_users.us_checked, tbl_a.a_checked** och **tbl_b.b_checked**. 

Jag vill hämta värdena från de tre checked-kolumnernerna. Problemet är att jag inte på förhand vet ifall det finns poster i tabellerna tbl_a och tbl_b som stämmer med tbl_users; jag kan alltså inte använda **...WHERE us_id = a_id = b_id...** eftersom villkoret bara är uppfyllt om användaren har lagt något i tabellerna a och b. 

Jag har testat INNER JOINs, IFNULL(a_checked, 0) och en massa andra grejer men jag får det bara inte att fungera. Är det någon som har ett tips är ni grymt välkomna att dela med er!

/Anders

Permalänk: https://www.webforum.nu/p/47763

## #2 — UrMe, 2002-07-12T13:17Z

Innan du gör SQL frågan så gör nån if-sats där du kollar om det just det id:et finns i tabell tbl_a och tbl_b ... och gör olika SQL frågor utifrån det.

Vet inte om hur du lägger till medlemmarna. Annars kan du ju bara göra en "row" med det id:et när medlemmen signar upp sig så vet du ju att det id:et finns där.. även fast det inte står info i de övriga kolumnerna...

Kan säkert gå att lösa med sql på nåt sätt.. men jag kan inte :)

Permalänk: https://www.webforum.nu/p/720377

## #3 — @nders, 2002-07-12T13:20Z

> Jag har testat INNER JOINs,

Det är en OUTER JOIN du skall använda dig av. Sök på det, och jag hoppas du finner. :)

Mvh,

Permalänk: https://www.webforum.nu/p/720378

## #4 — Jetboy, 2002-07-12T15:36Z

Yes. så här blev resultatet:

```
SELECT 
    us_id, (IFNULL(!(us_checked), 0) | 
    IFNULL(!MAX(a_checked), 0) | 
    IFNULL(!MAX(b_checked), 0)) AS notChecked 
FROM tbl_users 
LEFT JOIN tbl_a 
    ON (us_id = a_id) 
LEFT JOIN tbl_b 
    ON (us_id = b_id) 
GROUP BY us_id";
```

 
Denna kod sammanställer checked-fälten i de tre tabellerna och visar med 1/0 om det finns något hos användaren som inte är checkat än. Koden hanterar även NULL-värden, och störs därmed inte om användaren inte har något i tabell a eller b. 

Tack för hjälpen!

/a

Permalänk: https://www.webforum.nu/p/720441

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/47763-hämta-bara-om-det-existerar
