Avatar billede frozenink Nybegynder
02. juli 2009 - 21:57 Der er 12 kommentarer og
1 løsning

SQL syntax Access.

Hej
Har denne streng som virker OK, den henter TYPE_NAME, TYPE_ID, TYPE_DESCRIPTION samt PIC_COUNT, som den skal, men jeg kan ikke få den til at hente PIC_IMAGE, kan det tilføjes linjen ?

"SELECT *, (SELECT COUNT(*) FROM PICTURES WHERE PIC_TYPE = TYPE_ID AND PIC_APPROVED = 1) AS PIC_COUNT FROM TYPES ORDER BY TYPE_ID DESC "

Databasen:
TYPES    (Tabel navn)
TYPE_ID
TYPE_NAME
TYPE_DESCRIPTION

PICTURES (Tabel navn)
PIC_ID
PIC_TYPE
PIC_NAME
PIC_IMAGE
PIC_APPROVED

I TYPE_ID er der ingen dubletter. (ID til linket på siden)

I PIC_TYPE er der dubletter, afh. antal billeder der er i galleriet, den skal bare hente een, om det er det første, midterste eller sidste er ligegyldigt, skal bruges som "en smagsprøve" på forsiden af galleriet, sammen med tilhørende link til albummet. (også ID til linket på siden)

Så det er vel noget med "TYPE_ID = SELECT TOP 1 PIC_TYPE FROM PIC_IMAGE" ? ? ?

PIC_IMAGE indeholder filnavn til et billede.

Håber min forklaring giver mening, er ikke særlig skrap i alt det der SQL.
Avatar billede CCodam Nybegynder
03. juli 2009 - 01:58 #1
Du blir lige nød til at gennemgå det igen, for jeg kan ikke lige helt se hvor du vil hen :/ Kan selvfølgelig godt være det bare er mig der er træt? :P

Men kan du ikke skrive, hvilke informationer du vil hente ud fra dine to tabeller, så skal jeg se om vi ikke kan få lavet dit en fin SQL sætning :)
Avatar billede frozenink Nybegynder
03. juli 2009 - 07:52 #2
SQL henter TYPE_NAME, PIC_TYPE, TYPE_ID, TYPE_DESCRIPTION samt PIC_COUNT.

Sammenligner PIC_TYPE og TYPE_ID så der kommer et link til en gruppe billeder.

TYPE_NAME = Navn på link.

TYPE_DESCRIPTION = Beskrivelse for gruppen

PIC_COUNT = Tæller antal i gruppe.

Det jeg vil er at der også vises et (gerne tilfældigt) billede fra den gruppe som der bliver linket til vha. PIC_IMAGE, så vil der være forskellige billeder for hvert link, efterhånden de bliver oprettet.

Hvis jeg bare indsætter PIC_IMAGE får jeg denne fejl.

ADODB.Fields error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/gal/forside.asp, line 58

Link til siden som den er nu.
http://www.rodeorm.dk/gal/forside.asp

Link til koden som den er nu.
http://www.rodeorm.dk/gal/forside.txt
Avatar billede stinejh1980 Nybegynder
03. juli 2009 - 08:56 #3
Har du sat relationen op mellem dine to tabeller?
Avatar billede frozenink Nybegynder
03. juli 2009 - 09:13 #4
Som sagt er jeg ikke særlig skrap til SQL.
Jeg aner ikke hvad du mener med "sat relationen op mellem dine to tabeller" *S*

Det jeg gerne vil have ud er hvad man kan kalde et tillæg til hvad den laver nu er,
PIC_TYPE + TYPE_ID = link / sti

PIC_TYPE + TYPE_ID + PIC_IMAGE = link / sti samt vise et billede fra gruppen.

Kan denne ikke hjælpe?
http://www.rodeorm.dk/gal/forside.txt
Avatar billede CCodam Nybegynder
03. juli 2009 - 09:41 #5
Hmm hvis den linie du har givet os, viker efter hensigten, så kunne du vel bare smide en extra select statement ind, selvom det ikke er det pæneste...


"SELECT *, (SELECT COUNT(*) FROM PICTURES WHERE PIC_TYPE = TYPE_ID AND PIC_APPROVED = 1) AS PIC_COUNT, (SELECT PIC_IMAGE FROM PICTURES WHERE PIC_TYPE = TYPE_ID AND PIC_APPROVED = 1 ORDER BY RAND() LIMIT 1) AS PIC_RANDOM FROM TYPES ORDER BY TYPE_ID DESC "


ORDER BY RAND() = "Ryster Posen"
Limit 1 = Tager den øverste :)

Håber det kan bruges?
Avatar billede stinejh1980 Nybegynder
03. juli 2009 - 10:04 #6
For at finde ud af hvilke billede den skal vælge bliver du nødt til at fortælle den hvordan de hører sammen (relationer)

Det vil sige i din TYPES tabel skal du lave en kolonne med en fremmednøgle som hedder PIC_ID.

Prøv at Google relationel databaser - eller sql fremmednøgler.
Avatar billede CCodam Nybegynder
03. juli 2009 - 10:55 #7
Tillæg til #5
Nu når jeg tænker over det, kan det godt være at det ikke hedder Limit 1 men Top 1 i access...
Avatar billede frozenink Nybegynder
03. juli 2009 - 11:03 #8
sql fremmednøgler

I TYPES er værdien TYPE_ID unik (tal).
I PICTURES er værdien PIC_ID unik (tal).
I PICTURES findes den samme værdi i PIC_TYPE som i TYPE_ID.

Kan det bruges?, ellers må jeg til at ændre i min DB
Avatar billede stinejh1980 Nybegynder
03. juli 2009 - 11:10 #9
JA hvis du er sikker på at de altid hører sammen, men det er noget "juks".

I min tabel har jeg f.eks. det samme billede til flere produkter

Det vil sige jeg har en tabel med billeder og en tabel med produkter - hvor der er en billedeID kolonne. Derfor er der flere produkter hvor billedeID'et er det samme.

Det er den mest brugte metode at gøre det på.

Jeg kan godt forstår hvis du ikke er vant til at arbejde med DB at det ikke giver mening - det gjorde det heller ikke for mig i starten.

Hvis du sender mig databasen, kan jeg godt sætte det på for dig.

Skriv din adresse, så skriver jeg til dig :-)
Avatar billede frozenink Nybegynder
03. juli 2009 - 11:22 #10
Billedet (filnavn) PIC_IMAGE er også unik for hver PIC_ID.
vil helst ikke ændre i DB, for jeg har flere sider/gallerier som skal ændres, og ja jeg er sikker på de altid hører sammen.
Lidt "juks" kan man altid lave. *S*

Men hvis det ikke kan laves anderledes, så - -

vega@frozenink.dk
Avatar billede stinejh1980 Nybegynder
08. juli 2009 - 11:20 #11
Jeg har sendt svarete retur på din e-mail.
Avatar billede frozenink Nybegynder
23. juli 2009 - 21:24 #12
@ elvstine.
Tak for løsning, smider du et svar.
Avatar billede stinejh1980 Nybegynder
29. juli 2009 - 00:08 #13
Det var så lidt :-)
Forstod du hvad jeg havde gjort?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester