webForumDet fria alternativet

Join utan träff i ena tabellen?

8 svar · 537 visningar · startad av leniz

lenizMedlem sedan aug. 2001676 inlägg
#1

Hej!

Försöker skriva en kod som ska plocka fram träffar ur en tabell där det INTE finns någon förekomst av träffen i en annan tabell.

Alltså i TABELL 1 finns objekt som har ett idnummer (objektid), om det finns några tillbehör till objektet så lagras de i TABELL 2 där objektetd idnummer även finns, det är så jag kopplar ihop dem.

sql="select o.objektid, o.objektnamn, count(tillbehorid) as t.x from tillbehor as t inner join objekt as o on o.objektid=t.objektid where t.x=0"

Mvh Lena

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Du vill alltså ha de objekt som inte har något tillbehör?

select <kolumner>
  from objekt
  where not exists
  (select * 
      from tillbehor
     where objekt.objektid = tillbehor.objektid)

Flyttas från ASP

lenizMedlem sedan aug. 2001676 inlägg
#3

Hej!

Ja precis, men det är lite mer villkor med också och fler tabeller med inner join emellan.
Så jag testade lägga till detta på slutet:

and not exists (select t.objektid from tillbehor as t inner join objekt as o on t.objektid=o.objektid)

Då får jag detta felmeddelande:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'exists (select

Kan jag inte använda inner join i de här satserna om det ska fungera?

lenizMedlem sedan aug. 2001676 inlägg
#4

Hej igen!

Testade givetvis din variant utan inner join i satsen mellan parentesen också men det ger samma felmeddelande.

Mvh Lena

aasahMedlem sedan mars 20034 471 inlägg
#5

Pröva:

select <kolumner>
  from objekt
  where <andra villkor> and objektid not in
  (select objektid 
      from tillbehor)
lenizMedlem sedan aug. 2001676 inlägg
#6

Hej!
Tack för förslaget men det ger tyvärr detta felmeddelande:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select objektid from tillbehor)' at line 1

@ndersMedlem sedan juni 200032 969 inlägg
#7

Exakt hur ser din SQL-fråga ut då?
Vilken version av MySQL använder du?

LarsGMedlem sedan dec. 200012 464 inlägg
#8

Felet låter som om du använder 4.0 (eller äldre) av Mysql, som inte har stöd för subselect.

select <kolumner>
  from objekt 
  left join tillbehor
     on objekt.objektid = tillbehor.objektid
  where tillbehor.objektid is null
lenizMedlem sedan aug. 2001676 inlägg
#9

Toppen! Det här fungerade!
Stort tack och trevlig helg!

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)