# index erzeugen



## fatfox (27. Dez 2010)

Hallo Leute, 

Ich habe ein Table mit zwei Spalten:

Friends:
------------------
Name | age 
------------------

Dann möchte ich Spalte "age" zwischen 10 bis 20 auswählen und in der Ausgabe noch Spalte "number" nach "age " dazu erzeugen:

Also ich möchte die Ausgabe so ausiehen:

-------------------------------
number | Name | age
-------------------------------

Ich kenne nur: select Name, age from Friends where age between 10 and 20;

Aber wie kann ich die Spalte "number" bekommen? Gibt es eine Funktion wie auto index ?



Vielen Dank für eure Bemühungen!


----------



## sunny-boy (27. Dez 2010)

Hallo, 
du musst deiner Tabelle eine Spalte "number" hinzufügen. Diese nennt man in der Regel ID. 
Dieses Feld sollte zudem "auto Increment" sein, d.h der Wert wird automatisch erhöht.
 Dann kannst du mit 

```
SELECT name, age FROM Friends WHERE age between 10 and 20 ORDER BY ID
```
das Ergebnis sortieren.


----------



## fatfox (27. Dez 2010)

sunny-boy hat gesagt.:


> Hallo,
> du musst deiner Tabelle eine Spalte "number" hinzufügen. Diese nennt man in der Regel ID.
> Dieses Feld sollte zudem "auto Increment" sein, d.h der Wert wird automatisch erhöht.
> Dann kannst du mit
> ...



Hi sunny-boy,

Ich möchte nur die Leute, die 10 < age < 20 nummerieren, nicht alle. 

z.B. In meinem Original Table habe ich 100 Leute, sie sind nach Name soritert, age zwischen 10 bis 20 gibt es nur 30 Leute. Ich möchte nur die 30 Leute nummberien nach age. also ich möchte eine Numerierung von 1 bis 30. 

(Nach deiner Methode werde ich die ID von originalem Table bekommen.)

Weiß du, wie funktioniert es?


----------



## Gast2 (27. Dez 2010)

In MySQL?


```
SET @num:=1;
SELECT @num:=@num+1 as row, name, age FROM Friends WHERE age between 10 and 20;
```


----------



## fatfox (27. Dez 2010)

fassy hat gesagt.:


> In MySQL?
> 
> 
> ```
> ...



Danke Fassy!!!

Aber deine Methode ist doch nicht ganz richtig, wenn ich sortieren, dann ist die Reihenfolge nicht mehr nach der age sortiert.

Also, wenn ich "order by age desc" hinzufügen

SET @num:=1;
SELECT @num:=@num+1 as row, name, age FROM Friends WHERE age between 10 and 20 ORDER BY age DESC

Dann ist die Reihenfolge nicht richtig. weiß du wie kann man das machen?


----------



## Gast2 (28. Dez 2010)

Was heißt nicht richtig?

Es wird doch bestimmt nach der age Spalte sortiert? Das einzige was ja falsch sein könnte wäre die Sortierrichtung? Oder ist dein age Spalte evtl als VARCHAR definiert? Dann würde die DB natürlich "falsch" sortieren...


----------



## fatfox (28. Dez 2010)

fassy hat gesagt.:


> Was heißt nicht richtig?
> 
> Es wird doch bestimmt nach der age Spalte sortiert? Das einzige was ja falsch sein könnte wäre die Sortierrichtung? Oder ist dein age Spalte evtl als VARCHAR definiert? Dann würde die DB natürlich "falsch" sortieren...



Danke fassy! Ich habe gestern vielleicht irgendwo falsch eingegeben, deshalb war die Reihenfolge falsch. Heute habe ich noch mal den Befehl eingetippt, dann ist alles richtig! 

Vielen vielen Dank!


----------

