Avatar billede thomas_r Nybegynder
30. maj 2000 - 10:54 Der er 6 kommentarer

2 tabeller, samme kolonnenavne

Jeg har to (faktisk tre) tabeller :

Category
  ID
  Name

Entity
  ID
  Name

Tabellerne er forbundet sådan at hver post i Entity har én Category.

Sprøgsmålet er nu hvordan referer jeg til de forskellige felter ?

Hvordan får jeg udskrevet posterne i Entity + deres category ?

rs("Entity.ID")
rs("Entity.Name")
rs("Category.ID")
rs("Category.Name")

...dette virker ikke !
Avatar billede fumes Nybegynder
30. maj 2000 - 11:04 #1
Ehh - du kan starte med din sql.

sql = "select * from category"
set rs1.open sql, con, 1, 1

sql = "select * from entity"
set rs2.open sql, con, 1, 1

rs1("id")
rs2("id")

Eller henter du dem i ét sql statement???
Avatar billede sone Nybegynder
30. maj 2000 - 11:12 #2
I SQL bruger du Category.ID osv.
Hvis du laver SELECT x, y, z FROM...

Kan du hente værdierne med RS(0), RS(1), RS(2) - første felt nævnt i SELECT har nummer 0 osv.
Avatar billede ludo Nybegynder
30. maj 2000 - 11:35 #3
SELECT * FROM Entity LEFT JOIN Category ON Category.ID=Entity.ID
Hvis altså ID feltet er bindeleddet.
Så får du alle poster fra Entity (den venstre tabel) og kun de poster der matcher fra Category (højre tabel.
Skal du bruge dem omvendt, laves bare en RIGHT JOIN i stedet.
Så kan de hentes med rs
Avatar billede thomas_r Nybegynder
30. maj 2000 - 11:38 #4
Til fumes :
Kan de ikke lade sig gøre med én sql sætning, den er jo opbygget og virker i Access ?

Jeg poster lige min sql sætning, så kan i lege lidt med den (der er lidt flere tabeller) :

strSQL = "SELECT Entity.Id, Entity.Name, Entity.Xcoordinate, Entity.Ycoordinate, Topic.Name, Category.Name FROM (((CategoryEntity INNER JOIN Entity ON CategoryEntity.Entity = Entity.Id) INNER JOIN Category ON CategoryEntity.Category = Category.Id) INNER JOIN CategoryTopic ON Category.Id = CategoryTopic.Category) INNER JOIN Topic ON CategoryTopic.Topic = Topic.Id" ' WHERE (((Entity.Zip)='8000') AND ((Entity.Address1) Like '%mejlgade%')) ORDER BY " & strOrderBy & ";"

Til sone, så får jeg denne fejl :

ADODB.Fields fejl '800a0cc1'
ADO could not find the object in the collection corresponding to the name or ordinal reference requested by the application.

/page2/db_paging.asp, linje 138
________________________________________
Avatar billede philiph Nybegynder
30. maj 2000 - 22:28 #5
Det er fordi du ikke har Category.ID med i listen over felter. Tilføj Category.ID, lige før Category.Name, og prøv igen.

Philip
Avatar billede mawtex Nybegynder
01. juni 2000 - 23:43 #6
Christ!!

Hvis du har to kolonner med "samme navn" kan du benytte "AS" i din SELECT-sætning:

SELECT t1.kolonne AS T1kolonne, t2.kolonne AS t2kolonne

Det virker på alle de SQL-produker jeg har set - incl. Access.

Tag desuden og kik på kommandoen GetRows()
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
Kurser inden for grundlæggende programmering

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