Avatar billede topceres Nybegynder
06. januar 2008 - 15:51 Der er 16 kommentarer og
2 løsninger

JOIN queries

Jeg tror ikke helt jeg har fået fat i begrebet join i SQL forespørgsler - desværre. Scenariet er nogenlunde som følger:
----------
Tabel: Acc

ProdID
AtrID
ValID
GruppeID
----------
Tabel: Atr

VareID
AtrID
ValID
----------


Jeg har VareID som en variabel. Jeg skulle så gerne have alle ProdID fra Acc, hvor AtrID og ValID svarer til AtrID og ValID fra Atr, og hvor VareID er lig min variabel...:

SELECT acc.ProdID AS varenummer
FROM acc
JOIN acc ON acc.AtrID=atr.AtrID AND acc.ValID=atr.ValID
WHERE atr.VareID = '".$varenummer."'

Dette funger ikke. Er der nogen, der kan fortælle mig hvad jeg gør galt? :-)
Avatar billede terry Ekspert
06. januar 2008 - 16:37 #1
Try using INNER JOIN
Avatar billede terry Ekspert
06. januar 2008 - 16:38 #2
Avatar billede terry Ekspert
06. januar 2008 - 16:49 #3
SELECT Acc.ProdID AS vareNummer
FROM Acc
INNER JOIN Atr ON Acc.AtrID = Atr.AtrID AND Acc.ValID = Atr.ValID
WHERE Atr.VareID = 1
Avatar billede terry Ekspert
06. januar 2008 - 16:49 #4
What programming language and dB are you using?
Avatar billede topceres Nybegynder
06. januar 2008 - 16:54 #5
Hi Terry,

INNER shouldn't matter with MySQL, which is by the way the DB im programming this for. The language is PHP. I have tried modifying it as you suggested with no more luck than before ... but you can confirm, that the syntax is correct in yout example above? Then maybe my problem is elsewhere...
Avatar billede arne_v Ekspert
06. januar 2008 - 17:06 #6
Din syntax ser fin ud.

Hvilken fejl får du ?
Avatar billede topceres Nybegynder
06. januar 2008 - 17:07 #7
mysql_num_rows(): supplied argument is not a valid MySQL result resource in (...)
Avatar billede topceres Nybegynder
06. januar 2008 - 17:08 #8
Det jeg ikke er helt med på er, om terrys eller min metode er den rette: altså om det skal være JOIN Acc ON (...) eller JOIN Atr on (...)?
Avatar billede arne_v Ekspert
06. januar 2008 - 17:12 #9
Terrys er korrekt. Du skal ikke joine acc med sig selv.
Avatar billede arne_v Ekspert
06. januar 2008 - 17:13 #10
prøv med:

mysql_quer("select ...") or die(mysql_error());

så får du en MySQL fejl meddelelse ud.
Avatar billede topceres Nybegynder
06. januar 2008 - 17:18 #11
Ahh ja, se det gav jo et godt clue:

Illegal mix of collations (latin1_danish_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='

Jeg prøver lige at modificere min tabel lidt... :-)
Avatar billede topceres Nybegynder
06. januar 2008 - 17:36 #12
Thanks to you both, terry for correcting my syntax and arne_v for leading me in the right direction for finding my (other) mistake. Pls, both answer and I will split the points - ok?
Avatar billede arne_v Ekspert
06. januar 2008 - 17:39 #13
ok
Avatar billede topceres Nybegynder
06. januar 2008 - 17:47 #14
ups, der kan man bare se, jeg er rundhåndet ;-) terry, you also place an answer, then lets see if I can figure out how to give you some points also :-)
Avatar billede terry Ekspert
06. januar 2008 - 19:06 #15
:o)
Avatar billede topceres Nybegynder
06. januar 2008 - 19:20 #16
Damn, again - sorry. I had no idea that it would change the points I gave earlier. Well, maybe its fair enough. Sorry arne_v, though ... :-(
Avatar billede terry Ekspert
06. januar 2008 - 19:38 #17
Thanks topceres.
Do you want some of these Arne?
Avatar billede arne_v Ekspert
06. januar 2008 - 21:55 #18
ingen grund til at besvære sig med det
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



IT-JOB