Avatar billede crapman Nybegynder
17. februar 2005 - 10:43 Der er 7 kommentarer og
1 løsning

Søge i 2 tabeller med mysql

Hejsa,
Jeg står overfor at skulle lave en søgefunktion, som skal kunne søge i 2 tabeller.

Det er bygget op på følgende måde:

main_item: indeholder informationer om produkterne og hvilken type produkt det er. Denne indeholder "item_no" som er id'et for denne tabel. Desuden indeholder den "item_type", som fortæller hvilken tabel den ellers skal søge i.

I "item_tire" er der for hver post også et id, som også hedder "item_no".. Dette er lig med "item_no" i "main_item". Man kan se denne tabel som udvidede informationer om det enkelte produkt. Det vil sige, at er "item_type"-feltet i "main_item"-tabellen = "tire", så kan der findes yderligere informationer om denne record i "item_tire".

Det jeg vil lave er en søgefunktion, som søger på informationer om hver record i både "main_item" og "item_type".

Hvordan gør man det?
Avatar billede ldanielsen Nybegynder
17. februar 2005 - 11:14 #1
SELECT kolonne1, kolonne2 FROM main_item INNER JOIN item_type ON main_item.item_no = item_type.item_no

eller den anden syntaks (som jeg ikke kan li' af én eller anden grund):

SELECT kolonne1, kolonne2 FROM main_item, item_type WHERE main_item.item_no = item_type.item_no
Avatar billede crapman Nybegynder
17. februar 2005 - 11:16 #2
Sejt Ldanielsen.. Jeg løste faktisk lige problemet selv på samme måde, men du får point da du jo også kom med svaret :)
Avatar billede ldanielsen Nybegynder
17. februar 2005 - 11:17 #3
Dette giver alle records, men hvis du vil søge, så:

SELECT kolonne1, kolonne2
FROM main_item
INNER JOIN item_type
ON main_item.item_no = item_type.item_no
WHERE
Kolonne1 = 'tester' OR kolonne2 > 5 (eller hvad det nu er du vil)

BEMÆRK:
Hvis du nævner kolonner hvis navn findes i begge tabeller, skal du angive hvilken du mener ved at skrive Tabelnavn.Kolonnenavn, fx. item_type.item_no
Avatar billede ldanielsen Nybegynder
17. februar 2005 - 11:17 #4
Nå tak for det :o)
Avatar billede crapman Nybegynder
17. februar 2005 - 12:05 #5
Hmm, det ser dog ikke ud til at virke helt perfekt...
Alle værdier i item_tire.construction er Null, men når jeg sætter den del ind i tabellen viser den ingen poster.. ellers virker det fint.... Why?

sql = "SELECT main_item.*, item_tire.*, item_tire.item_name AS item_name FROM main_item INNER JOIN item_tire ON main_item.item_no = item_tire.item_no WHERE main_item.item_group_id LIKE '%"&request("item_group_id")&"%' AND item_tire.tech_construction = Null AND main_item.item_type = 'tire'"
Avatar billede crapman Nybegynder
17. februar 2005 - 12:06 #6
Er det fordi denne værdi ligger i den anden tabel?
Avatar billede ldanielsen Nybegynder
17. februar 2005 - 12:58 #7
Nej, nu kender jeg ikke MySql så godt, men hvis det var MSSQL, så skulle det være

... AND item_tire.tech_construction IS Null ...

FORDI Null betyder "ikke initialiseret". Man kan ikke sige noget som helst om null, derfor kan man heller ikke sige at noget er lig med null.

Se her:

NULL = NULL : False
NULL <> NULL : False
'en værdi' = NULL : False
'en værdi' <> NULL : False
NULL IS NULL : True
NULL IS NOT NULL : False
'en værdi' IS NULL : False
'en værdi' IS NOT NULL : True
Avatar billede ldanielsen Nybegynder
17. februar 2005 - 12:59 #8
Hvis det virker så har jeg næsten fortjent point'ene :o)
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