Wyświetlanie dodatkowej tabeli w SELECT

0

Witam.
Potrzebuję wraz z wyświetlaniem rekordów, wyświetlić który to numer wiersza.
Próbowałem tym, ale wypisuje ciągle 1

SELECT @test:=if(@test = null, @test:=0, @test:=@test+1),salary  FROM `salary` 

Czyli powinno wyświetlić przykładowo:

1, 3000
2, 5000
3, 6000
4, 7000

itd. itp.

Dzięki.

dodanie znacznika <code> - Furious Programming

2

zrób wcześniej set @test=0, a potem Twoje zapytanie

1
if(@test is null, ...
0

Dziękuję za pomoc. Działa tylko dla tego.

SET @test=0;
SELECT @test:=IF(@test IS NULL, @test:=0, @test:=@test+1),salary  FROM `salary`;

Jeśli użyję bez SET'a

SELECT @test:=IF(@test IS NULL, @test:=0, @test:=@test+1),salary  FROM `salary`;

to nie zadziała, wyświetlają się 0

Jeszcze jedno pytanie, czy dałoby się to zrobić w inny sposób, tak żeby był tylko sam SELECT ? Takie przynajmniej mam zadanie.

"Należy utworzyć zapytanie, które zwróci ... , dodatkowo każdy rekord powinien zawierać unikalny numer wiersza (rekord pierwszy = 1, drugi = 2 itd.). Dane powinny być posortowane wg. wynagrodzenia – od największego do najmniejszego."

3
Select * from (
  SELECT @rownum:=@rownum+1 rownum, salary FROM (SELECT @rownum:=0) r, salary
  -- where jak potrzebujesz
  order by salary desc
) as t1

mam nadzieje ze nic nie pokrecilem ;]

0

@dzek69 - wszystko pięknie działa.

Połączyłem z drugą tabelą tylko jeszcze troszkę źle mi wyświetla, otóż:

SELECT * FROM (
  SELECT @rekord:=@rekord+1 Rekord, T1.Surname, T1.Name, T2.Salary FROM (SELECT @rekord:=0) r, salary T2 , emp T1
  WHERE T1.Emp_id = T2.Emp_id AND T2.Valid_to = CURDATE()
  ORDER BY T2.salary DESC
) AS t1 ORDER BY @rekord ASC

Wynik działania :

Rekord Surname  Name        Salary
2      Janina   Kowalczyk   5000
1      Jan      Kowalski    2800

Chciałbym aby to Janina była pierwsza a Jan drugi :)

Edit://
Natomiast ten kod:

SELECT * FROM (
  SELECT @rekord:=@rekord+1 Rekord, (SELECT T1.Surname, T1.Name, T2.Salary FROM emp T1, salary T2 WHERE T1.Emp_id = T2.Emp_id AND T2.Valid_to = CURDATE() ORDER BY T2.Salary DESC) 
    FROM (SELECT @rekord:=0) r, salary
  ORDER BY salary DESC
) AS t1 ORDER BY @rekord ASC

zwraca:

#1241 - Operand should contain 1 column(s)

dodanie znaczników <code> i <code class="sql"> - Furious Programming

0

@wolacinio: jest wieczór, jestem leniwy, daj zrzut tabeli

0

Dałem Ci tabele z danymi.
Chcesz plik .sql ?

0

byłoby wygodniej w sql

0

Proszę :)

1
SELECT @rekord:=@rekord+1 Rekord, t1.* FROM (
  SELECT T1.Surname, T1.Name, T2.Salary FROM salary T2, emp T1
  WHERE T1.Emp_id = T2.Emp_id AND T2.Valid_to = '2014-02-25'
  ORDER BY T2.salary DESC
) AS t1, (SELECT @rekord:=0) r

1 użytkowników online, w tym zalogowanych: 0, gości: 1