Gå til innhold

Anbefalte innlegg

Hei!

 

Noen som har en løsning på ett spørsmål jeg har her..

 

Jeg har 2 tables.

 

Table 1: software

 

+---------------------------------------------------+

| ID | Show | Shownr | Title | Text | Date |

+---------------------------------------------------+

 

Table 2: books

 

Akkurat lik..

 

Det jeg kunne tenke meg er å få hentet ut de 5 siste inleggene fra begge tabellene ut i en fin liten side...

 

Er der noen som vet hvordan man kan gjøre det? :)

 

/Yaricks :)

Lenke til kommentar
Videoannonse
Annonse
Hei!

 

Noen som har en løsning på ett spørsmål jeg har her..

 

Jeg har 2 tables.

 

Table 1: software

 

+---------------------------------------------------+

| ID      | Show | Shownr | Title | Text | Date |

+---------------------------------------------------+

 

Table 2: books

 

Akkurat lik..

 

Det jeg kunne tenke meg er å få hentet ut de 5 siste inleggene fra begge tabellene ut i en fin liten side...

 

Er der noen som vet hvordan man kan gjøre det? :)

 

/Yaricks :)

9331827[/snapback]

 

Kunne du forklart hva du tenker av relasjoner og sånn? :)

Lenke til kommentar

Det er ikke mulig å hente ut data fra 2 separate tabeller. Derimot synes jeg det virker som designet er mer eller mindre lite gjennomtenkt. I stedet for å splitte opp i flere tabeller kan det være lurt å bruke en diskriminator. I MySQL kan det f.eks være en enum.

Endret av Ernie
Lenke til kommentar
Hei!

 

Noen som har en løsning på ett spørsmål jeg har her..

 

Jeg har 2 tables.

 

Table 1: software

 

+---------------------------------------------------+

| ID      | Show | Shownr | Title | Text | Date |

+---------------------------------------------------+

 

Table 2: books

 

Akkurat lik..

 

Det jeg kunne tenke meg er å få hentet ut de 5 siste inleggene fra begge tabellene ut i en fin liten side...

 

Er der noen som vet hvordan man kan gjøre det? :)

 

/Yaricks :)

9331827[/snapback]

 

Prøv dette:

 

SELECT * FROM software ORDER BY Date LIMIT 5

UNION

SELECT * FROM books ORDER BY Date LIMIT 5

 

Krever mysql 5.

Endret av tarquinn
Lenke til kommentar

Må nok føye meg inn i rekken av at database designet ikke er helt optimalt. En tabell er nok, hvis du legger inn ett type felt som foreslått over så er det bare å bruke WHERE type='ønsket_verdi' til å plukke ut det du trenger.

 

Blir kanskje litt "overkill" i dette tilfellet, men du kan ha to tabeller, hvor du har type_id i hovedtabellen og en egen tabell for type verdier, hvor type_id i hovedtabellen = id i type tabellen. Så gjør du bare noe slikt (trenger finpuss)

SELECT t1.felt1,t1.felt2,t1,felt3,t2.type FROM hoved_tab t1, type_tab t2
WHERE t1.type_id = t2.id AND t2.type ='ønsket_verdi'

 

Kan være greit å lese litt om Database Normalization

Kort fortalt handler normalisering seg om å effektivisere databasen

• unngå redudans i databasen, dvs dobbeltlagring av data

• unngå hull i databasen

Lenke til kommentar

Ja, er enig i at database designet ikke er slik det burde være.

 

Slik burde det være som presisert i posten over:

 

tabell1

+-----------------------------------------------------------+

| ID | Type_ID | Show | Shownr | Title | Text | Date |

+-----------------------------------------------------------+

 

tabell2

+-----------------------+

| Type_ID | Type |

+-----------------------+

1 - Software

2 - Books

 

Bruk så denne setningen for å hente ut de 5 siste postene med type = 'Software'.

Eventuelt den forrige løsningen. Jeg foretrekker denne.

 

SELECT t1.*, t2.type FROM tabell1 t1

INNER JOIN tabell2 t2 ON t1.Type_ID = t2.Type_ID

WHERE t1.Type_ID = 1

ORDER BY Date

LIMIT 5

 

* Nå er kanskje feltnavnet Date ikke så lurt å bruke. Er ikke det et reservert ord (funksjon) i MySQL?

Endret av tarquinn
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...