Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Vill få ut 4 tabeller som en

Postades av 2009-06-23 15:21:51 - Jonas Sjöblom, i forum mysq, Tråden har 5 Kommentarer och lästs av 7583 personer

Kan hända att detta inte är möjligt med enbart mysql, men om det är det skulle det underlätta mycket för mig.

Jag har 4 tabeller som heter:
Rows
Columns
Data
Form

Varje rad och kolumn har ett form_id som är en referens till en post i tabellen "form".
Varje rad i data har ett row_id och ett column_id som är referenser till respektive tabell.

Jag skulle nu vilja skriva en sqlsats som ger detta eller liknande resultat:

<code>
Namn Ålder Meddelande
Pelle 18 hej
Lisa 23 fint väder idag
</code>

när tabellerna har värdena:
Columns:
<code>
column_id form_id column_name
1 1 Namn
2 1 Ålder
3 1 Meddelande
</code>

Form
<code>
form_id
1
</code>

Rows
<code>
row_id
1
2
</code>

Data
<code>
data_id column_id row_id value
1 1 1 Pelle
2 2 1 18
3 3 1 hej
4 1 2 Lisa
5 2 2 23
6 3 2 fint väder idag
</code>


Svara

Sv: Vill få ut 4 tabeller som en

Postades av 2009-06-23 15:50:18 - Niklas Jansson

...och den här designen är förstås rätt besvärlig och "anti-rdb". Jag antar att det är dynamiska formulär du gör?


Det du ska göra är ju någon slags pivotering. Just i MySQL är jag inte säker på vad som existerar, men grundprincipen är ju ändå väldigt lätt;

SELECT row_id, Data1.Value, Data2.Value, ...
FROM rows
LEFT JOIN (SELECT * FROM Data WHERE Column_ID=1) As Data1 ON rows.Row_Id = Data1.Row_Id
LEFT JOIN (SELECT * FROM Data WHERE Column_ID=2) As Data1 ON rows.Row_Id = Data2.Row_Id
LEFT JOIN (SELECT * FROM Data WHERE Column_ID=3) As Data1 ON rows.Row_Id = Data3.Row_Id
...

Kan du bara loopa igenom kolumnerna och skapa sql efterhand på något sätt borde det vara enkelt.


Svara

Sv:Vill få ut 4 tabeller som en

Postades av 2009-06-30 20:35:44 - Jonas Sjöblom

Tack för svaret, ja det är dynamiska formulär som är anledningen att jag måste använda en sån här struktur.

Jag löste det på ett något osmidigare sätt än jag först planerat. Jag kör först en select för att få alla rows och loopar sedan igenom dem med php och hämtar values för varje rad.


Svara

Sv: Vill få ut 4 tabeller som en

Postades av 2009-07-01 08:44:50 - Henrik Weimenhög

Oj, det kommer bli fruktansvärt dålig performance på det där. du kan ju själv räkna på hur många SELECTs somkommer att köras bara för att visa ett enkelt formulär...

Vad är problemet egentligen? du kan ju selecta allt från tabellen, det räcker ju:

SELECT Data.value, Data.row_id
FROM columns INNER JOIN
Data ON columns.column_id = Data.column_id
WHERE (Data.form_id = 1)
ORDER BY Data.row_id, Data.column_id

sen loopar du bar igenom den koden och håller koll på när row_id ändras, då skriver du ut en radbrytning på sidan.


Svara

Sv:Vill få ut 4 tabeller som en

Postades av 2009-07-01 12:41:26 - Jonas Sjöblom

Koden körs inte när ett formulär visas, utan endast när man vill titta på datat från formuläret vilket endast administratörerna gör, så koden kommer inte att köras särskilt ofta.

Det som komplicerar det lite är att man t.ex. kan ta bort och lägga till fält i formuläret = nya kolumner. Så varje rad har inte alltid exakt samma fält.


Svara

Sv: Vill få ut 4 tabeller som en

Postades av 2009-07-01 12:49:56 - Niklas Jansson

Alltså kör du med "min kod" och hanterar null-värden ordentligt, eller med Henriks kod, och gör något i stil med:

for each row{
for(i = 1; i<max_column; i++){
if(reader.column = i){
print col
reader.readnext
}
}
}


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
692
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies