/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL union workaround
Fra : Jakob Kirkegaard


Dato : 06-10-02 17:18

Jeg har flg. tre tabeller:

adresser (indeholdende felterne adresseID og adresseNavn),
typer (indeholdende felternee typeID og typeNavn)
adresserTyperRel (indeholde felterne adresseID og typeID, beskriver
relationen mellem adresser og typer).

Det jeg gerne vil, er at vælge alle de adresseID hvor, adresseNavn er lig en
søgestreng ELLER adresseID er knyttet til en type, hvis typeNavn er lig
samme søgestreng - altså foreningsmængden af følgende to selects.

SELECT a.adresseID FROM adresser AS a, typer AS t, adresserTyperRel as r
WHERE (a.adresseID=r.adresseID AND r.typeID=t.typeID AND t.typeNavn
LIKE'%str%')

SELECT a.adresseID FROM adresser AS a WHERE a.adresseNavn LIKE '%str%'

Da min version af MySQL ikke understøtter UNION, leder jeg efter et sql
alternativ - kunne selvf. merge de to select resultater i mit script sprog,
men det ville være smartere at kunne klare det i sql.

Forsøgte at OR'e de to WHERE sætning sammen, altså

SELECT a.adresseID FROM adresser AS a, typer AS t, adresserTyperRel as r
WHERE ((a.adresseID=r.adresseID AND r.typeID=t.typeID AND t.typeNavn
LIKE'%str%') OR (a.adresseNavn LIKE '%str%'))

Men det virker ikke - eller dvs. returnérer et MEGET stort antal rækker :)

--
mvh Jakob Kirkegaard
http://jakir.dk

 
 
Jakob Kirkegaard (06-10-2002)
Kommentar
Fra : Jakob Kirkegaard


Dato : 06-10-02 19:47

Jakob Kirkegaard wrote:
> Da min version af MySQL ikke understøtter UNION, leder jeg efter et sql
> alternativ - kunne selvf. merge de to select resultater i mit script
> sprog, men det ville være smartere at kunne klare det i sql.

Fandt en løsning - min manglende viden om joins, lå til grund for problemet.

SELECT DISTINCT a.* FROM adresser AS a LEFT JOIN adresserTyperRel AS r ON
a.adresseID=r.adresseID LEFT JOIN typer AS t ON t.typeID=r.typeID WHERE
(t.typeNavn LIKE '%str%' OR a.adresseNavn LIKE '%str%')

--
mvh Jakob Kirkegaard
http://jakir.dk

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408523
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste