19. maj 2003 - 13:18Der er
26 kommentarer og 1 løsning
order by flere felter
Jeg har en database (konverteret fra Access) med bl.a. følgende felter:
Arrangement,Artist1,Artist2,Artist3.. osv. til Artist8, samt År.
Til nogle arrangementerne er der kun en artist til andre er alle otte felter i brug. Hvor et eller flere ArtistX felter ikke er i brug er værdien NULL.
Jeg vil gerne trække data ud fra databasen således at jeg har hvert år for sig selv og artisterne sorteret alfabetisk uanset hvilket ArtistX-felt de står i... Hvordan gør jeg dette ?
Spørg endelig hvis jeg ikke har forklaret grundigt nok...
hvis ikke du kan bruge det, så må du først lave en sql-forespørgsel således at du får nogenlunde den ovenstående tabel. Derefter gemme dataene i en ny tabel eller bare i et recordset. Derefter en ny forespørgsel som jeg har lavet ovenfor.
Det er bare svært at få en udtrækning af artister der optræder til et givent arrangement når det hele er lavet i en tabel. Mit råd til dig er at du laver en tabel der hedder artister, og en der hedder arrangementer. I tabellen artister kan du så have artist_id, navn osv. og i arrangementer have arrangement_id, arrangement, år osv. I artist tabellen kan du så sætte et arrangement_id ind, og på den måde få hentet de artister der hører til et specifikt arrangement.
Det kunne ex. gøres ved:
SELECT arrangementer.år, arrangementer.arrangement, artister.navn FROM artister, arrangementer WHERE arrangementer.arrangement_id = 1 ORDER BY navn
jeg kan godt se hvad du mener... det virker også meget logisk, men jeg har 14-1500 poster i min tabel, så jeg skal vel næsten lave et script der laver det til to tabeller... Nå, jeg må vel bare i gang... chefen vil snart se resultater... ;-)
/Brian.
Ps: lader lige spørgsmålet stå åbent... det kunne jo være at nogle havde noget at tilføje...
hvad er der galt i dette: INSERT INTO arr (`navn`, `sted`, `by`, `aar`, `startdato`, `slutdato`) VALUES ($row[Arrangement], $row[sted],$row[by],$row[aar],$row[startdato],$row[slutdato])
Du henter de ting du skal bruge fra arrangement tabellen(SELECT), og laver en ny tabel artister(CREATE), hvor du så smider dem i(INSERT). Husk at slette dem fra arrangement tabellen ;)
okay... så langt er jeg med... men hvordan linker jeg så artisten til arr_id ? mysql funktionen LAST_INSERT_ID() kan jeg ikke rigtigt gennemskue - og ej heller php-funktionen mysql_insert_id()...
Kan du ikke gøre det ved at bruge SELECT, CREATE, INSERT og DELETE, som jeg skrev før? Nej, ok, har prøvet lidt frem og tilbage, og kan godt se den er lidt kringlet. Ved sgu ikke helt hvordan den skal skæres. Er bange for at du er nød til at starte forfra :( Har desværre ikke så meget tid i dag, men skal nok tænke videre.
INSERT INTO artister (navn, arr_id) VALUES ($artist1, $id)
Og husk at slette dine poster i den gamle database. Jeg er langt fra sikker på det vil virke, men det er nok det bedste jeg kan gøre for dig. Hvordan har du i øvrigt fået godkent et feltnavn der hedder by? Det er et reserveret ord i SQL, derfor jeg har kaldt den bynavn.
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.