MySQL-Select Problem
fossi
- php
Hallo zusammen,
habe ein kleines Problem. Ich bin gerade dabei, meine Navigation aus einer MySQL-Tabelle zu holen.
Ich habe vie Spalten erstellt:
Jetzt würde ich gerne alle Seiten anzeigen lassen außer diese mit der Kategorie '6' und hier allerdings auch nur ab NUMMER >= '2'.
Wie kriege ich das hin? muss ich da mit klammern arbeiten?
Alle Seiten anzeigen außer der KATEGORIE '6' ist ja kein Problem:
SELECT * FROM $dbtable WHERE kat != '6' ORDER BY kat,nr,seite
nur wie gesagt, höher oder gleich 2 (Nummer) ist das problem.
Habt ihr einen rat?
ciao fossi
probiers mal so:
SELECT * FROM $dbtable WHERE kat != '6' AND nummer > '2' ORDER BY kat,nr,seite
servus
SELECT * FROM $dbtable WHERE kat != '6' AND nummer > '2' ORDER BY kat,nr,seite
wenns nur so einfach wäre ;-( aber so würde er ja nur die seiten rausholen die NICHT die kategorie 6 haben und bei nummer höher 2 sind. Es sollte aber nur innerhalb der Kategorie 6 höher sein und nicht auf alle kategorien höher 2.
gruß fossi
Hi,
SELECT * FROM $dbtable WHERE kat != '6' AND nummer > '2' ORDER BY kat,nr,seite
Es sollte aber nur innerhalb der Kategorie 6 höher sein und nicht auf alle kategorien höher 2.
mit anderen Worten: Entweder ist die Kategorie ungleich '6', oder die Nummer größer '2'. Wieso speicherst Du eigentlich Zahlen als Zeichenketten?
Cheatah
Servus
mit anderen Worten: Entweder ist die Kategorie ungleich '6', oder die Nummer größer '2'.
Nicht ganz um es ein wenig verständlicher zu machen hier mal eine Beispielnavigation:
name kat nr seite
------------------------------------
home 1 1 1
galerie 2 1 1
-frühling 2 2 1
-sommer 2 3 1
-winter 2 4 1
-winter#02 2 4 2
kontakt 3 1 1
Angenommen, ich möchte nun alle Seiten filtern außer Kategorie '6' ab Nummer '2' Somit müsste mySQL mir folgende Seiten liefern:
name kat nr seite
------------------------------------
home 1 1 1
galerie 2 1 1
kontakt 3 1 1
Wieso speicherst Du eigentlich Zahlen als Zeichenketten?
ich habe die zahlen nicht als zeichenketten gespeichert, sie sind als smallint angegeben.
ich hoffe, es ist so besser erklärt.
ciao fossi
Hi,
Nicht ganz um es ein wenig verständlicher zu machen hier mal eine Beispielnavigation:
ähm, könntest Du das Beispiel eventuell noch etwas aufbereiten? "WHERE nr < 2" wäre hier eine absolut ausreichende Bedingung: vor allem weil es kein kat=6 gibt.
Wieso speicherst Du eigentlich Zahlen als Zeichenketten?
ich habe die zahlen nicht als zeichenketten gespeichert, sie sind als smallint angegeben.
Warum vergleichst Du sie dann mit Zeichenketten? 10 > 2, aber '10' < '2'.
Cheatah
servus
ähm, könntest Du das Beispiel eventuell noch etwas aufbereiten? "WHERE nr < 2" wäre hier eine absolut ausreichende Bedingung: vor allem weil es kein kat=6 gibt.
das war ja wie gesagt nur ein beispiel - nicht das originale - was hier bei dem beispiel die 2 ist, meinte ich eigentlich als 6 - wollte nur nicht noch mehr seiten in dem beispiel einbringen.
Warum vergleichst Du sie dann mit Zeichenketten? 10 > 2, aber '10' < '2'.
schon erledigt - aber daran liegt es ja nicht. hast du eine ahnung?
Hi,
das war ja wie gesagt nur ein beispiel - nicht das originale - was hier bei dem beispiel die 2 ist, meinte ich eigentlich als 6 - wollte nur nicht noch mehr seiten in dem beispiel einbringen.
nimm's mir bitte nicht übel, aber: Häh?
Bitte formuliere doch mal die Bedingung, die Du gerne hättest, in verständlichem Deutsch, unter Beachtung _aller_ denkbaren Fälle.
Cheatah
ich nicht ganz verstehen was hier los. schreib nochmal genau was du willst, dann kann ich evtl. weiterhelfen. chichi
servus nochmal,
ich nehme das gleiche beispiel wie vorher. Also wie man an der DB-Struktur erkennen kann, umfasst eine kategorie immer einen bereich wie zum beispiel den bereich Galerie. Unter der Galerie gibt es die Seiten Frühling, Sommer und Winter (Winter sogar mit 2 weiteren Unterseiten, weil zum Beispiel ganz viele Bilder da waren).
name kat nr seite
------------------------------------
home 1 1 1
projekte 2 1 1
- aktuell 2 2 1
- fertig 2 3 1
referenzen 3 1 1
hilfe 4 1 1
über uns 5 1 1
galerie 6 1 1
-frühling 6 2 1
-sommer 6 3 1
-winter 6 4 1
-Zweite Seite 6 4 2
-Dritte Seite 6 4 3
kontakt 7 1 1
Ich möchte nun, dass in meiner Navigation aber nur die untenstehenden Seite angezeigt werden und die restlichen außer betracht gelassen werden:
name kat nr seite
------------------------------------
home 1 1 1
projekte 2 1 1
- aktuell 2 2 1
- fertig 2 3 1
referenzen 3 1 1
hilfe 4 1 1
über uns 5 1 1
galerie 6 1 1
kontakt 7 1 1
wie man sieht fehlen alle galerie Seiten außer der "Galerie-Startseite". Mit welchem mySQL-SELECT Befehl schaffe ich es nun dass zu erreichen?
Ich hoffe dass es nun so besser ist ;-)
fragen? -> fragen!
ciao fossi
Hi,
Mit welchem mySQL-SELECT Befehl schaffe ich es nun dass zu erreichen?
Ich hoffe dass es nun so besser ist ;-)
keine Ahnung. Ich bin nach wie vor der Ansicht, dass ich mit [pref:t=82321&m=479442] richtig lag; lediglich die Relation hat das falsche Vorzeichen.
Cheatah
Hi,
wie man sieht fehlen alle galerie Seiten außer der "Galerie-Startseite". Mit welchem mySQL-SELECT Befehl schaffe ich es nun dass zu erreichen?
Du willst also alle Einträge, die kat!=6 sind oder (falls kat=6 ist) nummer = 1 ist
also
WHERE kat != 6 OR nummer = 1
cu,
Andreas
damit dein feld nummern versteht musst du es in der datenbank auch so anlegen:
ich nutze statt varchar dann z.B. double oder dezimal. stelle das tabellenfeld dann mal mit phpmyadmin um.
hoffe du kommst klar.
chichi