webForumDet fria alternativet
Logga in / Bli medlem

databasdesign

Databaser & SQL

13 svar · 201 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Det finns en major bkackdraft med GetRows() och det är om man länkar ihop flera tabeller, man kanske får upp till 50 värden på en rad, och sedan kommer på att man missade en viktig post. Klämmer man in den så kanske man har oturen att posten hamnar i början av frågan...

...vilket gör att alla sidor som är beroende av den tabellen i olika typer av frågor *KAN* bli helt fel...

Genom att klämma in en enda post kan man ju förstöra en hel webbplats!

Ni som är kungar på området, hur gör ni... Eller hur gör ni inte!

---
OT
Denna webbplatsen funkar inte med Netscape.
http://www.design-gruppen.nu/

Medlem sedan juni 200032 967 inlägg
#2

Lägger till fältet sist i selectlistan.
Jag specificerar alltså alla fält som skall hämtas. Fälten kommer ju ut i resultatet i den ordning de specificeras i listan.

Lägger du bara till sist, så är det ju ingen risk att du förstör andra referenser till arrayindex i applikationen.

Mvh,

Medlem sedan juni 20008 205 inlägg
#3

Inte för att jag ens kommer i närheten av asp under mina dagliga sysslor, men en bra variant vore väl att deklarera konstanter som motsvarar det index kolumnerna kommer att få i matrisen som kommer från getRows.

Medlem sedan juli 20003 825 inlägg
#4

Jag tror det skulle fungera med SQL Server men jag tror inte det går med Access.

I SQL Server kan man "baklänges" fråga hur många tabeller som finns, vad dom heter, namnen på kolummerna och vad dom innehåller. Man kan alltså göra ett webbaserat administratinsverktyg (precis som phpMyAdmin) för att hantera själva databasen. Det fungerar inte med Access.

Nån guru på området kanske kan rätta mig på denna punkten för jag vill inte påstå att jag är supersäker på min sak...

Medlem sedan juli 20003 825 inlägg
#5

@nders
Ahh! Smart ass igen! :-) Typiskt, jag brukar bara köra den slöa varianten med stjärnan... klart att det blir krångligt då!

Då ska jag bara säga till kunden att jag måste göra om lite, men det går fort... :-)

Medlem sedan juli 20003 825 inlägg
#6

Det var inte *så* himmla jobbigt att göra om allt, det var snarare befriande!

Nu blir dokumantation och eventuell framtida underhåll osv mycket enklare.

Bättre sent än aldrig... Det känns bra!

Medlem sedan juli 20003 825 inlägg
#7

While we're at it...

Jag frågade i en tidigare tråd om hur man kopplar ihop fyra tabeller och fick väl aldrig något riktigt bra svar på det.

Om någon känner sig manad ska jag inte hindra er att posta förslag!

Jag har förövrigt gjort om delar av projektet så jag tror jag slipper använda mig av den tekniken men man vet ju aldrig...

Medlem sedan dec. 200012 464 inlägg
#8
select * from t1,t2,t3,t4
 where t1.id = t2.id
   and t2.id = t3.id
   and t3.id = t4.id
Medlem sedan juli 20003 825 inlägg
#9

Var det så enkelt!?

Varför håller man på och krånglar med inner join och left join då?

Det kanske finns fördelar i andra fall men då kan man kanske applicera tillvägagångssättet när det ger klara fördelar! Eller är jag helt plockad bakom en cirkusvagn...

Medlem sedan dec. 200012 464 inlägg
#10

Om du enbart har inner join behöver man aldrig använda join-syntaxen, det går lika bra att skriva på det sättet som jag gjorde.

Däremot om du har minst en (left/right) outer join, så måste du använda en join i from listan.

Medlem sedan juli 20003 825 inlägg
#11

Jaha... Ja, jag får nog experimentera lite med det där. Gör jag det kanske jag fattar varför man ska använda join över huvud taget!

Tack för koden i alla fall.

Medlem sedan dec. 200012 464 inlägg
#12

Det tråkiga med join-syntaxen är att olika dbms tillåter olika saker. T.ex. så kräver access att man skriver

select * from ((t1 inner join t2 on t1.id = t2.id) inner join t3 on t2.id = t3.id) inner join t4 on t3.id = t4.d

medan mysql, däremot inte tillåter att man har med parenteser.

Enligt standard så kan man ha med parenteserna om man vill. Det är också så att Access kräver att man har med ordet inner eller outer vilket inte heller är enligt standard.

Medlem sedan juli 20003 825 inlägg
#13

Wow...! Är detta nya rön eller har det varit så länge!?

Dessa aspekter har jag inte sett diskuteras i tidigare trådar, vilket därmed inte sagt att det inte har diskuterats.

Tack för dina inlägg!

Medlem sedan juli 20003 825 inlägg
#14

Note!

Efter grundlige efterforskningar (trial en error eller blod, svett och tårar...) kan jag meddella att skillnaden mellan join och det andra, enklare sättet är att om man skriver JOIN LEFT behöver det andra tabellen ej finnas.

Använder man den andra varianten förutsätts att alla data redan finns.

Hajar ni!? Förmodligen är jag ensam i hela forumet att inte känna till detta men nu vet jag det i alla fall.

jag ville bara säga att det finns en skillnad och om man inte tar hänsyn till det blir det "either BOF or EOF, maybe the selected post is deleted".

:-)

263 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)