webForumDet fria alternativet

3till1 + count?

11 svar · 348 visningar · startad av Palle

PalleMedlem sedan apr. 20002 716 inlägg
#1

Hej,

Gah, det står still i huvvet och jag vägrar gå den långa vägen runt. ;)
Behöver slå ihop dessa till en sql-sats om det går:

[red](1) sql = "SELECT [/red]JE_candidate_cv_id[red] FROM JE_candidate_cv_wish_cathegory WHERE JE_cv_cathegory_id = "& [i]intCategoryID[/i]
 
(2) sql = "SELECT [blue]JE_candidate_profile_id[/blue] FROM JE_candidate_cv WHERE JE_candidate_cv_id = "& [/red]JE_candidate_cv_id[red]
 
(3) sql = "SELECT COUNT(*) FROM JE_candidate_profile WHERE JE_candidate_profile_id = "& [blue]JE_candidate_profile_id[/blue] &" AND JE_candidate_profile_trr = 1"[/red]

Det som ska hämtas i slutändan är ett tal, antal kandidater, i en sökfunktion.
intCategoryID är ett tal som användaren väljer i en drop-meny.

Jag har försökt färga koden här ovan så ni kan se hur relationerna hör samman.

(1) hämtar x antal id-nummer som sedan används i (2) för att hämta kandidaternas id.
(3) sedan räknar samman de kandidater som följt med genom (1) och (2).

Några tips eller idéer? :)

LarsGMedlem sedan dec. 200012 465 inlägg
#2
select  JE_candidate_profile_id , count(*)
FROM JE_candidate_cv cv join JE_candidate_profile cp
on cv.JE_candidate_profile_id = cp.JE_candidate_profile_id 
where JE_candidate_profile_trr
and JE_candidate_cv_id in
( select JE_candidate_cv_id 
   FROM JE_candidate_cv_wish_cathegory 
 WHERE JE_cv_cathegory_id = <intCategoryID> )
group by JE_candidate_profile_id
PalleMedlem sedan apr. 20002 716 inlägg
#3

Nja, det ville sig inte riktigt..

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'and'.

LarsGMedlem sedan dec. 200012 465 inlägg
#4
select  JE_candidate_profile_id , count(*)
FROM JE_candidate_cv cv join JE_candidate_profile cp
on cv.JE_candidate_profile_id = cp.JE_candidate_profile_id 
where JE_candidate_profile_trr [b] = 1 [/b]
and JE_candidate_cv_id in
( select JE_candidate_cv_id 
   FROM JE_candidate_cv_wish_cathegory 
 WHERE JE_cv_cathegory_id = <intCategoryID> )
group by JE_candidate_profile_id

Jag glömde det när jag klistrade ihop.

PalleMedlem sedan apr. 20002 716 inlägg
#5

Hmm, det borde jag ju sett själv. :r

Tyvärr vill det sig inte riktigt nu heller och jag har lite svårt med dessa avancerade satserna..

[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'JE_candidate_profile_id'.

LarsGMedlem sedan dec. 200012 465 inlägg
#6
select  cv.JE_candidate_profile_id , count(*)
FROM JE_candidate_cv cv join JE_candidate_profile cp
on cv.JE_candidate_profile_id = cp.JE_candidate_profile_id 
where JE_candidate_profile_trr  = 1 
and JE_candidate_cv_id in
( select JE_candidate_cv_id 
   FROM JE_candidate_cv_wish_cathegory 
 WHERE JE_cv_cathegory_id = <intCategoryID> )
group by cv.JE_candidate_profile_id

Eftersom kolumnen finns med i båda tabellerna så måste man kvalificera namnet.

PalleMedlem sedan apr. 20002 716 inlägg
#7

Tyvärr.. fortfarande samma.

[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'JE_candidate_profile_id'.

PalleMedlem sedan apr. 20002 716 inlägg
#8

Nu så, nu fick jag igång den.. :)

Tackar så mycket!

[red]SELECT	cp.JE_Candidate_profile_id, COUNT(*) AS intCnt
FROM	JE_candidate_cv cv INNER JOIN
		JE_Candidate_profile cp ON cv.JE_candidate_cv_candidate_profile_id = cp.JE_Candidate_profile_id
WHERE	(cp.JE_Candidate_profile_trr = 1) AND (cv.JE_candidate_cv_id IN
		(SELECT     JE_candidate_cv_id
	FROM	JE_candidate_cv_wish_cathegory
		WHERE      JE_cv_cathegory_id = <intCategoryID>))
GROUP BY cp.JE_Candidate_profile_id[/red]
PalleMedlem sedan apr. 20002 716 inlägg
#9

..trodde jag. ;)

Den returnerar två poster istället för count-värdet, som i detta fall blev 2, jag vill med hjälp av intCnt skriva ut antalet.
Går detta eller måste jag loopa igenom recordsettet för att få ut, 2 i detta fall, mitt count-värde?

LarsGMedlem sedan dec. 200012 465 inlägg
#10

Den returnerar två poster istället för count-värdet, som i detta fall blev 2, jag vill med hjälp av intCnt skriva ut antalet.

Jag förstår inte vad du menar med detta, i synnerhet

som i detta fall blev 2

Jag trodde att du vill ha alla candidater som tillhör en viss kategori och för varje kandidat vill du ha antalet förekomster för denne kandidat i tabellen JE_Candidate_profile.

Frågan returnerar en post med två kolumner för varje kandidat.

PalleMedlem sedan apr. 20002 716 inlägg
#11

Det jag vill göra är följande:

Jag försöker skapa en sökfunktion där rekryteringsföretag (RF) söker i den befintliga databasen efter lämpliga kandidater baserat på Yrkeskategori, Område och Stad. Just denna sql-sats som diskuterats här ovan gäller för yrkeskategori och detta val gör (RF) i en dropmeny.
Databasen består av en mängd tabeller, i detta fall används följande tabeller:

  • JE_candidate_cv_wish_cathegory
    Här finns de olika kategorierna (JE_candidate_cv_wish_cathegory), som kandidaten valt samt kandidatens unika cv-id. (JE_candidate_cv_id)
  • JE_candidate_cv
    Här finns kandidatens unika cv-id (JE_candidate_cv_id) samt kandidatens unika profil-id. (JE_candidate_profile_id)
  • JE_candidate_profile
    Här finns kandidatens unika profil-id (JE_candidate_profile_id) samt om kandidaten tillhör en viss kategori eller inte. (JE_candidate_profile_trr)

Det jag vill göra är alltså att kolla hur många kandidater det finns i databasen som stämmer överens med sökkriterian och sedan lista antalet, ex. 12 st.

Hoppas du förstod. :)

PalleMedlem sedan apr. 20002 716 inlägg
#12

Nu så, nu fungerar det. :bire

[red]SELECT	COUNT(*) AS intCnt
FROM	JE_candidate_cv_wish_cathegory cw INNER JOIN
		JE_candidate_cv cv ON cw.JE_candidate_cv_id = cv.JE_candidate_cv_id INNER JOIN
		JE_Candidate_profile cp ON cv.JE_candidate_cv_candidate_profile_id = cp.JE_Candidate_profile_id
WHERE	(cw.JE_cv_cathegory_id = <intCategoryID>) AND (cp.JE_Candidate_profile_trr = 1)[/red]
Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb