Avatar billede axkris Nybegynder
18. februar 2004 - 16:06 Der er 3 kommentarer og
1 løsning

Kan ikke joine

Hej

Jeg vil gerne have listet de kategorier, som en annonce er knyttet til.

Noget med:

1) Find først de kategorier i PLUSPROFIL_KATEGORIER, som annoncen PLUSPROFIL_ANNONCE er knyttet til.
2) Brug kategorier at finde titlerne med over i LINKS_CATEGORIES.
3) Udskriv så titlerne.

CREATE TABLE PLUSPROFIL_ANNONCE (
  Annonce_ID int(11) NOT NULL auto_increment,
  Member_ID int(11) NOT NULL default '0',
  Navn text,
  PRIMARY KEY  (Annonce_ID)
) TYPE=MyISAM;

CREATE TABLE PLUSPROFIL_KATEGORIER (
  PlusprofilID int(11) NOT NULL default '0',
  KategoriID int(11) NOT NULL default '0',
  PRIMARY KEY  (PlusprofilID,KategoriID)
) TYPE=MyISAM;

CREATE TABLE LINKS_CATEGORIES (
  ID int(11) NOT NULL auto_increment,
  GroupID int(11) NOT NULL default '0',
  Title text NOT NULL,
  Public int(11) NOT NULL default '0',
  PRIMARY KEY  (ID,GroupID),
  KEY ID (ID),
  KEY GroupID (GroupID)
) TYPE=MyISAM;

Noget ala:

strSQL="SELECT ID, TITLE FROM LINKS_CATEGORIES left join PLUSPROFIL_KATEGORIER on LINKS_CATEGORIES.ID = PLUSPROFIL_KATEGORIER.PlusprofilID WHERE PLUSPROFIL_KATEGORIER.PlusprofilID = " & rs("ANNONCE_ID")

Men det dur ikke, fordi den blot udskriver de kategorier, som er lig med ANNONCE_ID (og ikke dem, som den er tilknyttet).

Kan du hjælpe?
Avatar billede kare Nybegynder
18. februar 2004 - 16:19 #1
Hvis du skal have listet alle kategorier, som en annonce er tilknyttet kan du gøre følgende (går ud fra, at du ikke skal bruge oplysninger fra annoncen, da dette ikke er i dit eksempel)

SELECT cat.ID, cat.TITLE FROM PLUSPROFIL_KATEGORIER annon_cat LEFT JOIN LINKS_CATEGORIES cat ON annon_cat.KategoriID = cat.ID WHERE annon_cat.Plusprofil = [ANNONCE_ID];

Håber det hjælper.
Avatar billede axkris Nybegynder
18. februar 2004 - 17:55 #2
[TCX][MyODBC]Unknown column 'annon_cat.Plusprofil' in 'where clause'

Ud over det, så ligger kategori-titlen ikke i PLUSPROFIL_KATEGORIER men i LINKS_CATEGORIES. Se gerne ovenstående.
Avatar billede axkris Nybegynder
18. februar 2004 - 18:11 #3
Klarede den selv:

strSQL="SELECT DISTINCT KategoriID from PLUSPROFIL_KATEGORIER WHERE PLUSPROFIL_KATEGORIER.PlusprofilID = " & rs("ANNONCE_ID")
Set rs2=dataConn.Execute(strSQL)
                                                   
if not rs2.eof then
  do while not rs2.eof
    strSQL="SELECT ID, TITLE FROM LINKS_CATEGORIES WHERE ID = " & rs2("KategoriID")
Avatar billede kare Nybegynder
19. februar 2004 - 09:10 #4
Min fejl.
der skulle stå WHERE annon_cat.PlusprofilID = .... (der manglede 'ID' på feltnavnet).

Hvis du lægger mærke til det, så vælges titlen fra cat.TITLE og 'cat' er LINK_CATEGORIES-tabellem (se gerne ovenstående).

Sætningen vælger alle poster i PLUSPROFIL_KATEGORI, hvor PlusprofilID = annoncens id.
Herefter left join'es med LINKS_CATEGORIES, hvorfra id og titel vælges. Left join gør, at du får alle poster fra PLUSPROFIL_KATEGORI med samt dem, der kan join'es med fra LINK_CATEGORIES.. - den skulle være god nok.

P.S.
Din metode virker også, men som du kan se af ovenstående kan det laves med en enkelt SQL-forespørgsel, hvilket jeg mener er at foretrække...
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
Computerworld tilbyder specialiserede kurser i database-management

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