/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Hvordan indsættes en ny post i flere tabel~
Fra : Stig Holmberg


Dato : 09-01-05 09:59

Hvordan indsættes en ny post i flere tabeller med en mange til mange
relation?

Det er en billedatabase, opdelt i kategorier, hver kategori kan indeholde
mange billeder, og hvert billed kan være i flere kategorier, derfor mange
til mange relationen.

Tabellerne ser sådan ud:

tblBilled(tabelnavnet)
BilledID(autonummer)(primær nøgle)
Titel(tekst)

tblSamling(tabelnavnet)
BilledID(heltal))(primær sammensat nøgle)
KategoriID(heltal)(primær sammensat nøgle)

tblKategori(tabelnavnet)
KategoriID(autonummer))(primær nøgle)
Kategorinavn(tekst)

tblBilled har en 1 til mange relation med tblSamling
tblKategori har en 1 til mange relation med tblSamling
tblBilled får derved en mange til mange relation med tblKategori

Problemet er så når jeg skal indtaste i tabellerne via en formular, hvordan
får jeg indskrevet de 2 værdier i tblSamling?

Hvis brugeren vælger at et billede tilhører f.eks. 2 kategorier, skal der
jo også tilføjes 2 rækker til tblSamling, jeg kan simpelt hen ikke
gennemskue problematikken.

Der skal vel en forespørgsel til, jeg skal senere have det på nettet så det
ville være rart også at vide hvordan SQL´en ser ud.

Mvh. Stig



 
 
Jens Gyldenkærne Cla~ (10-01-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-01-05 11:03

Stig Holmberg skrev:

> Hvordan indsættes en ny post i flere tabeller med en mange til mange
> relation?

Hvis inddata kommer fra en formular, skal der køres en INSERT-sætning
for hver post i undertabellen (samt en INSERT-sætning til posten i
hovedtabellen).

Der er kun to muligheder ved INSERT - enten er kilden en række værdier,
angivet med VALUES, eller også er kilden en SELECT-forespørgsel.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Peter Brodersen (10-01-2005)
Kommentar
Fra : Peter Brodersen


Dato : 10-01-05 11:59

On Mon, 10 Jan 2005 11:02:38 +0100, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>Hvis inddata kommer fra en formular, skal der køres en INSERT-sætning
>for hver post i undertabellen (samt en INSERT-sætning til posten i
>hovedtabellen).
>
>Der er kun to muligheder ved INSERT - enten er kilden en række værdier,
>angivet med VALUES, eller også er kilden en SELECT-forespørgsel.

Hvis der er tale om samme tabel, er der en optional feature:
http://troels.arvin.dk/db/rdbms/#insert-multiple
MySQL og DB2 understøtter den.

I forbindelse med indsættelse af mange rækker ad gangen i MySQL (i
MyISAM-tabeller med table locks) kan den metode virkelig varmt
anbefales. Indsætter man 10.000 rækker er det noget mere
hensigtsmæssigt kun at ha' fx 10 INSERTs à 1.000 rækker, i stedet for
10.000 INSERTs, der hver især resulterer i låsning af tabellen,
opdatering af datafil, opdatering af indexfil og åbning af tabellen
igen. Denne metode kan let reducere det samlede tidsforbrug til under
en tiendedel for en stor mængde INSERTs. At det så også er den eneste
måde i MyISAM at lave en semi-atomisk (hvilket dejligt selvmodsigende
udtryk :) bulk-insert er en anden sag.

Jeg vil dog gætte på, at andre sprog ikke understøtter den, fordi de
lægger op til at folk blot vil bruge en transaktion i stedet for - og
i øvrigt har row-level-locking, så problemet ikke er så stort.

Hvis det blot drejer sig om et par rækker, er det dog næppe relevant.

--
- Peter Brodersen

Jens Gyldenkærne Cla~ (10-01-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-01-05 14:12

Peter Brodersen skrev:

> Hvis der er tale om samme tabel, er der en optional feature:
> http://troels.arvin.dk/db/rdbms/#insert-multiple
> MySQL og DB2 understøtter den.

O.k. - den kendte jeg ikke.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

news.tele.dk (21-01-2005)
Kommentar
Fra : news.tele.dk


Dato : 21-01-05 21:04

Man kunne måske også overveje en andne mere dynamisk-forberedt tabel
struktur der ikke er afhængig af at skulle oprette en tabel hver gang en ny
kategori skulle tilføjes. Måske kender jeg ikke dit problem godt nok, men en
sådan struktur kunne i hvert fald også overholde 3. normal form.
man kunne forestille sig wen tabel med billede / kategori - sammenhængen i.
det ville give lette og hurtige kategorivisninger.
Jeg har selv lavet noget lignende, dog ikke med billedkategorier, som virker
rigtig godt.

Martin

Programør / webudvilker.
PHP/MYSQL

"Stig Holmberg" <noone@nowhwere.com> wrote in message
news:Mm6Ed.81709$Vf.3692858@news000.worldonline.dk...
> Hvordan indsættes en ny post i flere tabeller med en mange til mange
> relation?
>
> Det er en billedatabase, opdelt i kategorier, hver kategori kan indeholde
> mange billeder, og hvert billed kan være i flere kategorier, derfor mange
> til mange relationen.
>
> Tabellerne ser sådan ud:
>
> tblBilled(tabelnavnet)
> BilledID(autonummer)(primær nøgle)
> Titel(tekst)
>
> tblSamling(tabelnavnet)
> BilledID(heltal))(primær sammensat nøgle)
> KategoriID(heltal)(primær sammensat nøgle)
>
> tblKategori(tabelnavnet)
> KategoriID(autonummer))(primær nøgle)
> Kategorinavn(tekst)
>
> tblBilled har en 1 til mange relation med tblSamling
> tblKategori har en 1 til mange relation med tblSamling
> tblBilled får derved en mange til mange relation med tblKategori
>
> Problemet er så når jeg skal indtaste i tabellerne via en formular,
> hvordan
> får jeg indskrevet de 2 værdier i tblSamling?
>
> Hvis brugeren vælger at et billede tilhører f.eks. 2 kategorier, skal der
> jo også tilføjes 2 rækker til tblSamling, jeg kan simpelt hen ikke
> gennemskue problematikken.
>
> Der skal vel en forespørgsel til, jeg skal senere have det på nettet så
> det
> ville være rart også at vide hvordan SQL´en ser ud.
>
> Mvh. Stig
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste