Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Gerade/ungerade ID-Nummern auslesen





Frage

Hallo zusammen, ich habe Probleme mit einer WHERE-Bedingung. Ich möchte nur Daten mit ungerader ID-Nummer auslesen (in der Spalte daneben dann die mit gerader ID-Nummer) Gibt es einen WHERE-Befehl für gerade/ungerade Zahlen ? (even/uneven oder so ?) Ich habe mir jetzt so beholfen: [code]WHERE newsid LIKE ´%0´ OR newsid LIKE ´%2´ OR newsid LIKE ´%4´ OR newsid LIKE ´%6´ OR newsid LIKE ´%8´[/code] Das funktioniert, kommt mir aber sehr umständlich vor. Zweites Problem: Innerhalb der Where-Bedingung soll außerdem eine ganz bestimmte datei nicht mit ausgelesen werden, die in der Spalte "Ressort" mit dem vermerk "titel" gekennzeichnet ist. [code]WHERE newsid LIKE ´%0´ OR newsid LIKE ´%2´ OR newsid LIKE ´%4´ OR newsid LIKE ´%6´ OR newsid LIKE ´%8´ AND ressort <> ´titel´[/code] funktioniert nicht. Wenn ich hinter jede einzelne Zahl die Bedingung [code]AND ressort <> ´titel´[/code] setzte, funktioniert es: [code]WHERE newsid LIKE ´%0´ AND ressort <> ´titel´ OR newsid LIKE ´%2´ AND ressort <> ´titel´ OR newsid LIKE ´%4´ AND ressort <> ´titel´ OR newsid LIKE ´%6´ AND ressort <> ´titel´ OR newsid LIKE ´%8´ AND ressort <> ´titel´[/code] Aber dieses Ungetüm kanns doch nicht sein... Kann mir jemand weiterhelfen ? (Bin bei SQL leider noch Anfänger...) Vielen Dank ! Mich

Antwort 1 von Nessus

Hi,

da hilft die die Funktion Modulo weiter.
Entweder im Selectstatement, oder du machste eine kleine Funktion, die alles rausfiltert.
Beispiel:

<?php
$zahl=23;

if ($zahl % 2 != 0) {
echo $zahl." = ungerade.";
}
else {
echo $zahl." = gerade.";
}
?>


http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html
HTH
Nessus

Antwort 2 von Mich

Hallo Nessus,

danke erstmal!
Aber kapiert hab ichs trotzdem noch nicht ganz.

Wie würde die Funktion dann in meinem Fall ausschauen ( $zahl=newsid; ??)

und wie und wo müßte die Funktion eingebaut werden?

Wie würde dann die WHERE-Bedingung heißen ?
WHERE newsid = ´ungerade´

Ratlos...
Du merkst, ich habe nicht übertrieben, als ich mich als Anfänger bezeichnete....

Gruß
Mich

Antwort 3 von JaPPe

WHERE spalte%2 = 0

bringt dir die graden

WHERE spalte%2 > 0

die ungraden

für das andere gib mal bitte mehr infos

Greez
JaPPe

Antwort 4 von Mich

Hallo JaPPe,

ich möchte in einer Spalte alle Daten mit gerade ID, in der anderen alle Daten mit ungerader ID haben. Das wollte ich mit zwei eigenen SELECT-Anfragen machen.

Zur Problemlösung brauchen wir also nur eine Spalte anzuschauen.

Zur Zeit schaut meine Abfrage (etwas vereinfacht) so aus:

 $result = mysql_query("SELECT * FROM news WHERE  ressort <> ´titel´ ORDER BY newsid DESC LIMIT ".($ll_epp * $ll_active_page).´, ´.$ll_epp, $connect);

 while($myrow = mysql_fetch_assoc($result))
 {               
echo ...

(weiter unten kommt noch eine Blätter-Funktion dazu)

Jetzt möchte ich aber, daß damit nur die Daten mit ungerader ID ausgelesen werden. (Später will ich das für eine zweite Spalte auch mit allen geraden IDs machen)

Hoffe ich konnte klarmachen, was ich vorhabe...

Gruß
Mich

Antwort 5 von JaPPe

Für die 2 Spalten machst du einfach deine Abfrage über alle und dann in PHP

while( $myrow = mysql_fetch_assoc($result) )
{
 . Ausgabe 1. Spalte
 . $myrow = mysql_fetch_assoc($result);
 . Ausgabe 2. Spalte
}


damit läuft der die Schleife nur n/2 mal durch (bei n Ergebnissen)

für die ungraden bzw. graden musst du oben noch mal guggen, dann kannst du auch beides aus verschiedenen Abfragen holen.

Greez
JaPPe

Antwort 6 von Mich

Ich werd´s mal ausprobieren.
Vielen Dank !

Mich

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: