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:
http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html
HTH
Nessus
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
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 = 0bringt dir die graden
WHERE spalte%2 > 0die 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:
(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
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
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
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
Vielen Dank !
Mich

