Gå til innhold

mySQL og uthenting fra flere tabeller


Anbefalte innlegg

Hei

 

Jeg har et spørsmål angående mySQL. Jeg ønsker å begrense antallet spørringer mot databasen til det minimale.

 

La oss si at jeg har følgende datastruktur i databasen:

 

"hovedtabell":

 

id | navn | type

 

Mer spesialiserte tabeller:

 

id | masse spesialiserte felter avhengig av hvilken tabell det er fra...men ID feltet er alltid der.

 

 

Poenget her er at jeg kunne hentet ut denne dataen ved hjelp av LEFT JOIN on id eller noe slik. Problemet er bare at jeg ikke vet hvilken tabell jeg skal left join'e og hvilke felter jeg skal hente ut før jeg har sjekket type-feltet i hovedtabellen. Noen forslag på hvordan dette kan løses litt effektivt? Uten 2 spørringer altså.

 

Formålet er å ha alle de feltene som er uavhengig av type i en og samme tabell og ha de spesialiserte feltene for hver type i en "spesialisert" tabell som er spesifikk for den typen.

Endret av invictus
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

har tabellene et felt som kan binde to rader sammen?

 

SELECT * FROM hovedtabell h LEFT JOIN tabell2 t ON h.id=t.id

elns?

Endret av Slettet+142
Lenke til kommentar
har tabellene et felt som kan binde to rader sammen?

 

SELECT * FROM hovedtabell h LEFT JOIN tabell2 t ON h.id=t.id

elns?

8777303[/snapback]

 

Ja.

 

Problemet er bare at et felt i hovedtabell skal bestemme hvilken tabell som skal left-joines og hvilke felter den må hente ut.

Lenke til kommentar

For web-applikasjoner (LAMP o.l.) er det noen "regel" som sier hvor mange SQL-spørringer som er akseptabelt? Jeg forstår selvfølgelig at dette vil være avhengig av maskinvaren på serveren, men hvis det eksisterer noen generelle retningslinjer så kunne det jo vært hendig å vite om disse.

Lenke til kommentar
For web-applikasjoner (LAMP o.l.) er det noen "regel" som sier hvor mange SQL-spørringer som er akseptabelt? Jeg forstår selvfølgelig at dette vil være avhengig av maskinvaren på serveren, men hvis det eksisterer noen generelle retningslinjer så kunne det jo vært hendig å vite om disse.

8784981[/snapback]

Du sier svaret selv :) Nei, noen sånn retningslinje vil jeg hevde at ikke ville gitt deg noe, om den eksisterte. Det er så utrolig mange faktorer som spiller inn: Antallet samtidige connections, kompleksitet i spørringene, hardware, konfiugrasjon, indeksering... Jeg vil si alt fra 1 til 100+ spørringer/side vil kunne være akseptabelt, avhengig av situasjonen. Uten at jeg kan fatte at noen evt skulle ha behov for å kjøre 100 spørringere for å få opp en side...

Lenke til kommentar
har tabellene et felt som kan binde to rader sammen?

 

SELECT * FROM hovedtabell h LEFT JOIN tabell2 t ON h.id=t.id

elns?

8777303[/snapback]

 

Ja.

 

Problemet er bare at et felt i hovedtabell skal bestemme hvilken tabell som skal left-joines og hvilke felter den må hente ut.

8779029[/snapback]

 

Dette høres ut som en design-feil

Lenke til kommentar
Problemet er bare at et felt i hovedtabell skal bestemme hvilken tabell som skal left-joines og hvilke felter den må hente ut.

8779029[/snapback]

Vel, som andre har vært inne på... Dette er en DIGER designfeil, og vedkommende som har laget datamodellen her har ikke kunnet sakene sine. Slikt skal overhodet ikke forekomme.

Lenke til kommentar
Problemet er bare at et felt i hovedtabell skal bestemme hvilken tabell som skal left-joines og hvilke felter den må hente ut.

8779029[/snapback]

Vel, som andre har vært inne på... Dette er en DIGER designfeil, og vedkommende som har laget datamodellen her har ikke kunnet sakene sine. Slikt skal overhodet ikke forekomme.

8792826[/snapback]

 

Poenget er at flere forskjellige deler av programmet skal ha sin egen tabell for sin egen spesifikke data...

 

Hver rad i en hvilken som helst av disse tabellene skal kunne identifiseres unikt i forhold til hverandre...på tvers av tabeller (skal ha et felles entrypoint). (og felles auto_increment)

 

Videre skal kunne finne ut hvilken del av programmet som må kalles for å kunne behandle denne raden man har plukket ut hører til.

 

Min tanke var da at man skulle samle felles data for tabellene (id og type (som beskriver hvordan data skal tolkes)) i en felles tabell og lage mer spesifikke tabeller for den enkelte. På den måten kan man i programmet slå opp en komplett liste over alle rader, velge en, og så bli presentert med det som er aktuelt i forhold til hvilken type dataen er av og hvordan denne skal behandles.

 

Forstår dere poenget?

 

Sitter å tenker på andre måter jeg kan løse det på, men er ganske usikker. Hele hensikten er å lage et modulært program.

Endret av invictus
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...