php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.10.2011, 13:30  
Neuer Benutzer
 
Registriert seit: 16.10.2011
Beiträge: 20
PHP-Kenntnisse:
Anfänger
dida110 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Problem bei komplizierter MySQL Abfrage

Hallo zusammen
Ich freue mich meinen ersten Eintrag in dieses Forum schreiben zu dürfen

Ich habe folgendes Problem und ich komme einfach nicht weiter mit Forum beitragen lesen...

Ich möchte eine Abfrage machen der Code sieht folgendermassen aus:


SELECT
`users`.`id`,

`users_profil_facts`.`gewicht`,

`users_kontaktdaten`.`geschlecht`,

`users_pictures`.`profilbild`
FROM
`users`
INNER JOIN
(`users_profil_facts`, `users_kontaktdaten`, `users_pictures`)
ON (`users_profil_facts`.`benutzer_id` = `users`.`id` AND `users_kontaktdaten`.`benutzer_id` = `users`.`id` AND `users_pictures`.`benutzer_id` = `users`.`id`)
WHERE `users_kontaktdaten`.`geburtsdatum` <= '1994-00-00'
AND `users_kontaktdaten`.`geburtsdatum` >= '1990-00-00'
AND `users_kontaktdaten`.`geschlecht` = 'Frau'
AND `users_profil_facts`.`groesse` >= '100'
AND `users_profil_facts`.`groesse` <= '200'
AND `users_profil_facts`.`gewicht` <= ''
OR `users_profil_facts`.`zivilstand` LIKE 'Wite/r'
OR `users_profil_facts`.`zivilstand` LIKE 'Single'


Mein Problem besteht in den letzten zwei Zeilen. Die Abfrage funktioniert eigentlich, ausser wenn ich die letzten zwei Zeilen mit den oberen (Sprich OR mit AND mische).
Ich möchte das Datensätze angezeigt werden, die sowohl 'Wite/r' und 'Single' beinhalten aber nur wenn sie auch die oberen Definitionen erfüllen.
Wenn ich aus dem OR ein AND mache dann kommt kein einziger Eintrag mehr weil keiner 'Wite/r' und 'Single' sein kann.
Was gibt es noch für Möglichkeiten.

Wenn ich nur die beiden OR Abfragen mache funktioniert alles er liesst alle die 'Wite/r' und 'Single' sind aus.

Herzlichen Dank didia110
dida110 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.10.2011, 13:34  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

1) Bitte verwende anständige Threadtitel.

2) Bitte verwende Code-Tags für Quellcode und nicht den Wikipedia-Tag.

3) Du musst Dein Oder-Konstrukt in Klammern setzen und mittels AND mit der restlichen Bedingung kombinieren.

4) Du brauchst an der Stelle kein LIKE. = oder IN sollten langen. (mit letzterem kannst Du das ganze Oder-Konstrukt entsorgen.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 18.10.2011, 15:55  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

welchem Familienstand entspricht "Wite/r" ? fehlt da nur ein "w" ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 18.10.2011, 15:59  
Neuer Benutzer
 
Registriert seit: 16.10.2011
Beiträge: 20
PHP-Kenntnisse:
Anfänger
dida110 befindet sich auf einem aufstrebenden Ast
Standard

Herzlichen Dank OK, werde ich in Zukunft machen

Werde ich heute Abend ausprobieren.
dida110 ist offline   Mit Zitat antworten
Alt 19.10.2011, 11:27  
Neuer Benutzer
 
Registriert seit: 16.10.2011
Beiträge: 20
PHP-Kenntnisse:
Anfänger
dida110 befindet sich auf einem aufstrebenden Ast
Standard

Hat alles super funktioniert danke, jetzt habe ich aber noch ein weiteres Problem und zwar erstelle ich die MySQL Abfrage so..:
PHP-Code:
if($_POST['zivilstand_1'] != "")
{
$filter " AND `users_profil_facts`.`zivilstand` LIKE 'Wite/r'";
}
if(
$_POST['zivilstand_2'] != "")
{
$filter $filter " AND `users_profil_facts`.`zivilstand` LIKE 'Singel'";

Wie schaffe ich das, dass wenn ich mehr als ein Zivilstand ausgewählt habe er nicht mehr so ein Filter macht:
Code:
AND `users_profil_facts`.`zivilstand` LIKE 'Verheiratet' 
AND `users_profil_facts`.`zivilstand` LIKE 'In einer Beziehung'
Sondern so:
Code:
AND (`users_profil_facts`.`zivilstand` LIKE 'Verheiratet' 
OR `users_profil_facts`.`zivilstand` LIKE 'In einer Beziehung')
dida110 ist offline   Mit Zitat antworten
Alt 19.10.2011, 11:28  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

In einer Schleife, wo du ne Zählvariable mitlaufen lässt und dann die Formatierung entsprechend setzt!

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 19.10.2011, 11:31  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Noch mal: Beschäftige Dich mit IN(). Dem ist es egal, ob ein oder fünfzehn Auswahlmöglichkeiten zur Wahl stehen. Außerdem brauchst Du da noch immer kein LIKE.

Ach ja: Deine durchnummerierten Formularfeldbezeichner solltest Du auch durch ein Array ersetzen.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 19.10.2011, 11:47  
Neuer Benutzer
 
Registriert seit: 16.10.2011
Beiträge: 20
PHP-Kenntnisse:
Anfänger
dida110 befindet sich auf einem aufstrebenden Ast
Standard

OK, habe ich auch schon daran gedacht nur komme ich nicht auf die Lösung wie ich das genau machen soll.

Z.B. mit foreach? dan muss ich ja irgendwie sagen wenn (if) schon ein Zivilstand gesetzt ist soll er nicht mehr AND (`users_profil_facts`.`zivilstand` LIKE 'Singel'" sonder nur noch OR `users_profil_facts`.`zivilstand` LIKE 'Singel'") anhängt

das es nacher so aussieht:
PHP-Code:
AND (`users_profil_facts`.`zivilstandLIKE 'Singel'"
OR `users_profil_facts`.`zivilstand` LIKE 'blalbla'"

dida110 ist offline   Mit Zitat antworten
Alt 19.10.2011, 11:51  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Ich gebs auf...

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 19.10.2011, 11:52  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Zitat:
OK, habe ich auch schon daran gedacht nur komme ich nicht auf die Lösung wie ich das genau machen soll.
...schau Dir bitte mal den letzten Kommentar von Jens an! Das sollte dein Lösungweg sein (optimal). Ich hatte nur auf deinen letzten Beitrag geantwortet und die "Vorgeschichte" nicht dazu gelesen...was ich jetzt nochmal gemacht habe!

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL Timestamp Abfrage Problem imamk Datenbanken 18 11.08.2011 23:28
[Erledigt] MySQL - Abfrage bleibt Problem! yellow PHP Einsteiger 1 01.07.2011 13:47
[Erledigt] Problem mit MYSQL Abfrage in einer While Schleife mirko911 PHP Einsteiger 1 11.04.2011 11:54
Problem mit Abfrage - join, inner join, distinct? Gachet01 Datenbanken 2 27.01.2011 06:49
Problem mit Mysql abfrage wolfsmichel PHP Einsteiger 4 21.12.2010 22:35
MySQL Abfrage Problem mit Where parti02 Datenbanken 14 23.10.2008 14:52
mysql Abfrage Problem mit dem Join test022 Datenbanken 5 28.04.2007 08:07
Abfrage bei mySQL 4 ApfeL Datenbanken 5 24.03.2006 18:53
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
komplizierte mysql abfrage php_frage PHP Tipps 2007 5 28.12.2005 17:55
MySQL Abfrage Problem. web2 PHP Tipps 2005-2 7 25.07.2005 11:07
[Erledigt] MySQL Abfrage fieses Problem Datenbanken 5 21.07.2005 14:19
Problem mit Mysql Abfrage PHP Tipps 2005-2 0 11.07.2005 14:21
Problem mit mysql abfrage maximus PHP Tipps 2005 4 16.05.2005 19:56


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum