---
title: "INNER JOIN med hjälp av array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/191507-inner-join-med-hjälp-av-array"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "bigsky"
published: "2013-07-12T16:42:28.000Z"
updated: "2013-08-01T13:03:31.000Z"
replies: 10
views: 2653
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/191507-inner-join-med-hjälp-av-array"
---

# INNER JOIN med hjälp av array

## #1 — bigsky, 2013-07-12T16:42Z

Jag har ett formulär som genereras dynamiskt beroende på vilken restaurang man har valt. I databasen är det för resp. restaurang sparat vilka fält i formuläret som ska genereras för just den restaurangen. Datan är sparade enligt id,id,id,id osv.

Så här ser min databas ut:

Tabell restaurants:
restaurant_id (unikt id för varje restaurang)
report_fields (vilka fält som ska visas har sparats som t ex. 1,2,14,39,56)

Tabell report:
id (unikt id för just det formulärsfältet)

Antar att det måste till en typ av INNER JOIN för detta?

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

## #2 — aasah, 2013-07-14T10:56Z

Vad är det du vill åstadkomma egentligen? Din databasstruktur ser lite märklig ut. :q

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

## #3 — bigsky, 2013-07-14T17:58Z

Jag vill skapa ett formulär dynamiskt beroende på innehållet i databasen. Vilka fält som ska synas i formuläret är olika beroende på vilken restaurang man väljer att visa formuläret för. Alla tillgängliga formulärsfält i databasen har ett unikt id. I restaurangernas tabell finns det sparat vilka formulärs id:n som ska synas i det formulär som skapas för just den restaurangen.

T ex. för restaurang 1 ska formulärsfälten 2, 19 och 23 skrivas ut i HTML.

Har då dessa formulärs id:n sparade som 2,19,23 i restaurangernas tabell report_fields.

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

## #4 — aasah, 2013-07-14T21:05Z

Om du vill ha en relationsdatabas ska du inte spara fälten som en lista, utan som tre rader i det här fallet istället. Dvs, du lagrar en rad med RestID, FieldID per unik kombination av dessa.

Sedan... Jag antar att dina tabeller innehåller mer än id-värden för annars har du inget behov av en JOIN, det tillför ju ingen ny kunskap. Men om din formulärfält tabell innehåller tex (FieldID, name, type....) så behövs det.

Är det alltid samma presentation för en viss restaurang eller har du olika typer av formulär också? För då behöver du fler tabeller.

Du behöver alltså minst:
Restaurant (RestID, RestName, Address, Owner, ...) Eller vad du nu har för kolumner i den
FormField (FFID, FFName, Type, IsMandatory, ....) 
RestFormField (RestID, FFID) 

Där rest formField innehåller 
1, 2
1, 19
1, 23

```
SELECT * 
FROM 
   Resturant R 
   INNER JOIN RestFormField RFF ON R.RestID = RFF.RestID 
   INNER JOIN FormField FF ON RFF.FFID = FF.FFID
```

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

## #5 — bigsky, 2013-07-14T21:15Z

Det är alltid samma presentation för en viss restaurang, det finns bara ett formulär. Däremot ska man kunna uppdatera/ändra vilka formulärfält som ska visas.

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

## #6 — aasah, 2013-07-14T21:27Z

Då håller min lösning ovan.

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

## #7 — bigsky, 2013-07-14T21:30Z

Ok, ska prova med din lösning. Stort tack! :)

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

## #8 — bigsky, 2013-07-15T12:39Z

Det blir ju en hel del poster i tabellen RestFormField för alla olika kombinationer. Nu glöde jag tyvärr nämna det. Men för de flesta restauranger ska alla fält i formuläret skrivas ut. Man skulle inte kunna göra tvärtom, dvs. att RestFormField istället innehåller vilka fält som INTE ska synas för de restauranger som inte alla fält ska visas för? Borde ju minska antalet poster på kombinationer iaf.

Min ursprungliga SQL-fråga såg ut så här. Går den att kombinera med ditt förslag ovan eller med mitt förslag om att ha en tabell med undantag istället?

```php
SELECT * FROM report WHERE category = '$rowGetReportCategory[id]' ORDER BY name_id
```

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

## #9 — bigsky, 2013-07-31T15:57Z

Ok, jag kör med din lösning ovan markerad som lösning. MEN om jag nu även vill visa t ex. text eller annan data/innehåll som är lagrad i databasen för resp. formulärsfält. Hur ska då SQL-frågan se ut?

Ponera att jag ska generera formuläret för en viss restaurang. De formulär för restaurangen som ska visas, visas helt korrekt enligt din lösning ovan. Nu vill jag arbeta med data från databasen för resp. fält som genererats. Det kan handla om att skapa en ny rad eller uppdatera en befintlig rad i databasen baserat på de synliga formulärsfälten.

Den datan ligger i en annan tabell som heter visits.

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

## #10 — bigsky, 2013-08-01T12:00Z

Någon som kan hjälpa till? Har ganska bråttom :)

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

## #11 — bigsky, 2013-08-01T13:03Z

Nevermind, löste det själv!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/191507-inner-join-med-hjälp-av-array
