Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomijanie jednego warunku w podzapytaniu
Forum PHP.pl > Forum > Bazy danych > MySQL
zaksmok
Mam takie zapytanie:

  1. SELECT * FROM (SELECT @rownum:=@rownum+people_counter AS row_number, d.salary_base AS value, location, year_id FROM data_jobs d, (SELECT @rownum:=0) r WHERE location = 2 AND year_id = 3 AND salary_base IS NOT NULL AND job_id IN ('45','46','47','48') ORDER BY d.salary_base) AS t1


i niestety location=2 jest pomijane w zapytaniu. Może ktoś wytłumaczyć dlaczego?
nospor
1) Po co w ogóle tutaj robisz podzapytanie? Przecież to niczemu nie służy.
2) Czemu po from robisz: , (SELECT @rownum:=0) r ? Przecież to już w ogóle kaszani całość.

Masz zrobić normalne zapytanie, bez podzapytania a to:
(SELECT @rownum:=0)
masz zastąpić poprzez
SET @rownum=0 które masz wykonać jako normalne zapytanie przed głównym zapytaniem
zaksmok
Robię tam podzapytanie, bo całe zapytanie wygląda tak:
  1. SELECT t1.value+(t1.value-t3.minimum)/2 AS up, t1.value AS m, t1.value-(t1.value-t3.minimum)/2 AS lq, AVG(t4.av) AS av, total FROM (SELECT @rownum:=@rownum+people_counter AS row_number, d.salary_base AS value FROM data_jobs d, (SELECT @rownum:=0) r WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48') ORDER BY d.salary_base) AS t1, (SELECT sum(people_counter) AS total FROM data_jobs d WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48')) AS t2, (SELECT MIN(salary_base) AS minimum FROM data_jobs d WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48')) AS t3, (SELECT AVG(salary_base) AS av FROM data_jobs d WHERE year_id = 3 AND salary_base IS NOT NULL AND location = 5 AND job_id IN ('45','46','47','48')) AS t4 WHERE t1.row_number >= total*0.5 LIMIT 1


Mógłbym zrobić
  1. SET @rownum:=0

ale to i tak nie pomoże. Problemem jest
  1. @rownum:=@rownum+people_counter

który pomija mi where z jakiegoś powodu. Problem występuje tylko jeśli użyję IN. W przypadku where job_id = 45 nie ma problemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.