php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.05.2009, 12:18  
Neuer Benutzer
 
Registriert seit: 25.02.2009
Beiträge: 12
BlackBroom befindet sich auf einem aufstrebenden Ast
Standard Select Abfrage von zwei Eigenschaften

Hallo,
habe ein Problem mit einer SELECT Abfrage.
Es geht um folgende Abfrage:

PHP-Code:
$sql="SELECT * 
FROM produkte 
INNER JOIN produkte_feature ON produkte.prodid=produkte_feature.product_id 
WHERE produkte.display LIKE '1' AND produkte_feature.value LIKE 'black' AND produkte_feature.value LIKE 'large'"

Ich habe zwei Tabellen zuerst einmal produkte und produkte_feature.
In der produkte_feature Tabelle sind die Eigenschaften von meinen Produkten gespeichert.
Jetzt möchte ich nur die Produkte ausgeben, die bei display 1 haben und die Eigenschaft 'black' und die Eigenschaft 'large' haben.

Wenn ich die Abfrage so wie oben mache, bekomme ich kein Ergebnis.
Wenn ich vor produkte_feature.value LIKE 'large' ein OR mache, anstatt ein AND bekomme ich zwar ein Ergebnis, aber das falsche.
Es werden ja dann alle Produkte angezeigt, mit der Eigenschaft black oder large.
Ich möchte aber alle Produkte mit der Eigenschaft black und die dann noch die Eigenschaft large haben.

Wie muss man die Abfrage ändern, damit man das richtige Ergebnis bekommt?

Gruß,
Frank
BlackBroom ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 31.05.2009, 18:36  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Das kann so nicht funktionieren. WHERE filtert auf Datensatzebene, also kann value = 'bar' AND value = 'foo' niemal funktionieren. Zwei möglichkeiten sehe ich. Variante A. Du selektierst mit OR und guppierst nach Produkt (GROUP BY) und mit HAVING filterst du alle Datensätze aus die nicht 2mal selektiert wurden. Variante B. Du Joinst die Tabelle mit den Features zweimal, einmal für die Farbe, einmal für die Größe.
erc ist offline   Mit Zitat antworten
Alt 31.05.2009, 19:28  
Neuer Benutzer
 
Registriert seit: 25.02.2009
Beiträge: 12
BlackBroom befindet sich auf einem aufstrebenden Ast
Standard Antwort

Hallo,
erstmal vielen Dank für die Hilfe!
Hab da noch eine Frage zur Variante B.
Wie kann ich denn die Datenbank zweimal "joinen"?

Gruß,
Frank
BlackBroom ist offline   Mit Zitat antworten
Alt 02.06.2009, 09:41  
Benutzer
 
Registriert seit: 22.05.2009
Beiträge: 75
Schadstoff befindet sich auf einem aufstrebenden Ast
Standard

Du solltest mit " && " anstatt mit AND arbeiten,das funktioniert meistens besser!
Schadstoff ist offline   Mit Zitat antworten
Alt 02.06.2009, 11:24  
erc
Erfahrener Benutzer
 
Registriert seit: 02.01.2009
Beiträge: 730
PHP-Kenntnisse:
Fortgeschritten
erc wird schon bald berühmt werden
Standard

Zitat:
Zitat von BlackBroom Beitrag anzeigen
Wie kann ich denn die Datenbank zweimal "joinen"?
Nicht die Datenbank sondern die Tabelle. Das machst du einfach in dem du der Tabelle ein Alias gibst.
PHP-Code:
produkte_feature  AS feature_color INNER JOIN
produkte_feature  
AS feature_size ON (...) 
Und in WHERE suchst du dann alle Datensätze wo feature_color.value = 'black' AND feature_size.value = 'large'.


Zitat:
Zitat von Schadstoff Beitrag anzeigen
Du solltest mit " && " anstatt mit AND arbeiten,das funktioniert meistens besser!
erc ist offline   Mit Zitat antworten
Alt 02.06.2009, 11:29  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von erc Beitrag anzeigen
Sehr milde ausgedrückt!
__________________
Gruss
L
lazydog 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] Problem mit SELECT Abfrage BlackBroom Datenbanken 4 28.05.2009 14:13
Select Abfrage liefert falschen Wert tarian Datenbanken 3 22.03.2009 16:11
[Erledigt] Tabelle erstellt - SELECT Abfrage nicht möglich Lightware Datenbanken 14 07.03.2009 17:31
Select Box dynamische Abfrage und ausgabe in case abi PHP Tipps 2008 17 23.09.2008 18:08
SELect abfrage gibt nur id aus?:{ shifty Datenbanken 3 15.08.2008 11:55
Performance bei select abfrage Diet Datenbanken 4 14.05.2006 21:20
Mysql SELECT Abfrage -- Problem mit LIMIT djrace Datenbanken 2 01.05.2006 12:58
SELECT WHERE datetime abfrage - Optimierung mrSpok Datenbanken 15 23.03.2006 19:08
[Erledigt] select Abfrage Datenbanken 6 07.02.2006 17:32
[Erledigt] SELECT - Abfrage Datenbanken 2 04.01.2006 09:48
Im Select eine IFF Abfrage bendigo Datenbanken 4 21.11.2005 14:11
SELECT Abfrage.... seh den wald nich... center Datenbanken 8 01.06.2005 14:32
hochkommas in select abfrage.. ich raffe es nicht. hekto PHP Tipps 2005 31 22.01.2005 18:03
[Erledigt] [gelöst] MySQL abfrage eingrenzen anhand einer SELECT Auswah Datenbanken 13 01.12.2004 18:42
Select abfrage in Schleife PHP Tipps 2004 2 20.07.2004 15:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zwei select in einer abfrage, select abfrage mit zwei mal where php, select eigenschaften, select eigenschaften php, php select abfrage von zwei, where abfrage mit zwei möglichkeiten php, select * from eigenschaft, select from where like eigenschaft, eigenschaften select

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:03 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