webForumDet fria alternativet

Post finns inte i relaterad tabell

Databaser & SQL

24 svar · 481 visningar · startad av i-or · sida 2 av 2

Frågan, av i-or

Jag har en SQL-fråga som förenklad ser ut så här: SQL = "SELECT name FROM tabell1, tabell2 WHERE tabell1.name = tabell2.name AND tabell2.koll = 1" Nu är det så att alla namn i t1 inte finns i t2. Men jag vill fortfarande att de ska skrivas ut. Alltså, de som inte finns i tabell2 ska skrivas ut samt de som finns i tabell2 och har "koll"-värdet 1. De som finns i tabell2 och inte har "koll

Läs frågan i sin helhet →
Medlem sedan dec. 200012 464 inlägg
#21
SELECT Max(t_diaryworkouts.f_date) AS f_date, 
       t_diaryworkouts.f_runner, 
       t_members.f_username 
  FROM t_diaryworkouts left outer join t_members 
   on   t_members.f_id = t_diaryworkouts.f_runner 
   where f_date between adddate(current_date, interval -7 day) and current_date 
   and coalesce(f_who,1) = 1

Jag förstår dock inte riktigt. Om man tittar på ditt exempeldata så finns det poster i t_diaryworkouts som inte matchas av någon post i t_members. Stämmer det?

Medlem sedan nov. 2001294 inlägg
#22

Ok, det förklarar saken.

Det finns poster i t_diaryworkouts som inte matchas av någon post i t_diarysettings (alla poster i t_diaryworkouts matchas med poster i t_members) och dessa poster ska alltså också inkluderas.

Jättesnällt att du försöker lösa problemet!

Medlem sedan dec. 200012 464 inlägg
#23
SELECT Max(t_diaryworkouts.f_date) AS f_date, 
       t_diaryworkouts.f_runner, 
       t_members.f_username 
  FROM t_diaryworkouts inner  t_members 
   on   t_members.f_id = t_diaryworkouts.f_runner 
  left outer join t_diarysettings
   on t_diaryworkouts.f_runner = t_diarysettings.f_runner  
   where f_date between adddate(current_date, interval -7 day) and current_date 
   and coalesce(f_who,1) = 1

jag gissade på

t_diarysettings.f_runner

som kolumnnamn för att relatera t_diaryworkouts och t_diarysettings

f_who = 1 tolkar jag som att personen är offentlig

Medlem sedan nov. 2001294 inlägg
#24

Tack så jättemycket!

(f_who = 1 betyder inte offentlig, men jag ändrade bara till "(coalesce(f_who,3) = 3 OR coalesce(f_who,2) = 2)" så fungerade det som jag ville.)

Medlem sedan dec. 200012 464 inlägg
#25

(coalesce(f_who,3) = 3 OR coalesce(f_who,2) = 2)

kan du skriva som

coalesce(f_who,3) in (2,3)

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)