0
select 
MITARBEITER.NAME,
MITARBEITER.GEHALT
    from
        MITARBEITER
        where MITARBEITER.GEHALT = @minGehalt
        DECLARE @minGehalt as INT
        SET @minGehalt = (SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER)
        EXEC @minGehalt

@minGehalt is a number

My problem is it says its not declared

Cal-cium
  • 654
  • 12
  • 22

3 Answers3

0

You need to declare the variable before you use it. This ought to work:

DECLARE @minGehalt as INT
SET @minGehalt = SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER

SELECT 
    MITARBEITER.NAME,
    MITARBEITER.GEHALT
FROM
    MITARBEITER
WHERE
    MITARBEITER.GEHALT = @minGehalt

(I haven't tested this as I don't have a MySQL instance available, but this should do the trick)

SchmitzIT
  • 9,227
  • 9
  • 65
  • 92
0

Using the @ sign in queries means you are using a parameter. Parameters need to be declared using the DECLARE command:

DECLARE @minGehalt int;

You can also set the value using the SET command:

DECLARE @minGehalt int;
SET @minGehalt = 1234;

select 
.....

Or in your example:

DECLARE @minGehalt as INT
SET @minGehalt = SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER

select MITARBEITER.NAME,MITARBEITER.GEHALT
from MITARBEITER
where MITARBEITER.GEHALT = @minGehalt
Koby Douek
  • 16,156
  • 19
  • 74
  • 103
0
DECLARE @minGehalt as INT
DECLARE @maxGehalt as INT
DECLARE @minName as varchar(30) 
DECLARE @maxName as varchar(30)
SET @minGehalt = (SELECT MIN(MITARBEITER.GEHALT) FROM MITARBEITER)
SET @maxGehalt = (SELECT MAX(MITARBEITER.GEHALT) FROM MITARBEITER)
SET @minName = (SELECT MITARBEITER.NAME FROM MITARBEITER  WHERE MITARBEITER.GEHALT = @minGehalt)
SET @maxName = (SELECT MITARBEITER.NAME FROM MITARBEITER  WHERE MITARBEITER.GEHALT = @maxGehalt)
select  
    concat(@minName, '  ', @minGehalt) as 'Minimaler Gehalt',
    concat(@maxName, '  ', @maxGehalt) as 'Maximaler Gehalt'

Worked that way, thanks everyone!