php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.06.2011, 10:32  
ovl
Neuer Benutzer
 
Registriert seit: 22.06.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ovl befindet sich auf einem aufstrebenden Ast
Standard Eine Table mehrfach in einem Durchlauf abfragen

Hallo,

ich habe da ein problem seit gut einer Woche und bekomme es nicht gebacken.

Ich habe eine table "index" mit daten wo fotos getagged worden sind.

id | foto_id | category_id | active
1 | 12 | 1 | 1
2 | 13 | 1 | 1
3 | 13 | 2 | 1
3 | 12 | 3 | 1

Die Abfrage "cat_id = 1 AND value=1 OR cat_id = 2 AND VALUE = 1 GROUP BY foto_id" geht aber nicht da,

das Ergbnis nur die foto_id ausgeben wo beide Faktoren zutreffen und nicht nur einer. Wenn ich das so wie oben machen kommt jedes Foto wo nur ein Wert zutrifft.

habe leider keine Ahnung wie ich das lösen kann, da fehlen mir leider die Kenntnisse von mysql ein wenig.

danke für Eure Hilfe
Oliver aus Wien
ovl ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.06.2011, 11:08  
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

Hi.

Ich verstehe Dich kaum - bitte vernünftige Satzstellung! Was genau ist das Problem? Was geht nicht? Debugging betrieben? Evtl. etwas Code zur Verfügung?

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 22.06.2011, 11:19  
ovl
Neuer Benutzer
 
Registriert seit: 22.06.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ovl befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von wolf29 Beitrag anzeigen
Hi.

Ich verstehe Dich kaum - bitte vernünftige Satzstellung! Was genau ist das Problem? Was geht nicht? Debugging betrieben? Evtl. etwas Code zur Verfügung?

mfg Wolf29
Hallo,

das ist die Abfrage...
PHP-Code:
SELECT FROM dif_fotos_tag WHERE cat_id '70' AND cat_value OR cat_id '18' AND cat_value 1 GROUP BY foto_id ASC 
da bekomme ich dann aber alle foto_id's raus die cat_id 70 oder cat_id 18 einzeln haben, ich brauche aber nur die fotos die genau diese beiden cat_id in kombination als cat_value = 1 haben.

Auf Deutsch - wähle nur die Fotos aus die beide cat_id Werte pro Foto_id haben. Leider ist die Table des Kunden so aufgebaut das jeder Wert einzeln in eine Zeile geschrieben hat, und das kann man leider jetzt kaum mehr ändern

Ich hoffe das war etwas verständlicher.

lg
ovl ist offline   Mit Zitat antworten
Alt 22.06.2011, 11:22  
hts
Erfahrener Benutzer
 
Registriert seit: 07.09.2010
Beiträge: 722
PHP-Kenntnisse:
Fortgeschritten
hts befindet sich auf einem aufstrebenden Ast
Standard

Die Operatoren musst du Klammern:
Code:
WHERE (cat_id = 1 AND value = 1) OR (cat_id = 2 AND VALUE = 1)
Könntest du auch umschreiben:
Code:
WHERE value = 1 AND cat_id IN(1, 2)
hts ist offline   Mit Zitat antworten
Alt 22.06.2011, 11:31  
ovl
Neuer Benutzer
 
Registriert seit: 22.06.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ovl befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von hts Beitrag anzeigen
Die Operatoren musst du Klammern:
Code:
WHERE (cat_id = 1 AND value = 1) OR (cat_id = 2 AND VALUE = 1)
Könntest du auch umschreiben:
Code:
WHERE value = 1 AND cat_id IN(1, 2)
danke, aber das bringt nichts da ich hier leider wieder alle zeilen bekomme, wo nur ein wert zutrifft. ich brauche aber die fotos wo zb.

PHP-Code:
cat_id 1 4 uswzutreffen 
und alle wo nur
PHP-Code:
cat_id 1 oder 2 oder 3 zutreffen sollen nicht gefunden werden
das hauptproblem ist, das ich das anders gelöst hätte, aber die Datenbank steht und die Fotos sind getagged und ich soll jetzt das ganze lösen
ovl ist offline   Mit Zitat antworten
Alt 22.06.2011, 11:43  
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

Du brauchst die Klammern und ein HAVIND COUNT(id)=ANZAHL DER BEDINGUNGEN. Alternativ lässt sich das auch per Self-Join lösen. Du musst dann halt für jede einzelne Bedingung einen zusätzlichen Join implementieren.

Das was Du da vorliegen hast ist im Ansatz eine sogenannte Key-/Value-Tabelle (bzw. meist als KV-Table bezeichnet). Eine Und-Verknüpfte Suche in sowas ist mehr oder minder ein Standardverfahren. (Wenn auch ein viel kritisiertes und mit extremer Vorsicht zu genießendes.) Da müsste Google einiges zu haben.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 22.06.2011, 12:03  
ovl
Neuer Benutzer
 
Registriert seit: 22.06.2011
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
ovl befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Jens Clasen Beitrag anzeigen
Du brauchst die Klammern und ein HAVIND COUNT(id)=ANZAHL DER BEDINGUNGEN. Alternativ lässt sich das auch per Self-Join lösen. Du musst dann halt für jede einzelne Bedingung einen zusätzlichen Join implementieren.

Das was Du da vorliegen hast ist im Ansatz eine sogenannte Key-/Value-Tabelle (bzw. meist als KV-Table bezeichnet). Eine Und-Verknüpfte Suche in sowas ist mehr oder minder ein Standardverfahren. (Wenn auch ein viel kritisiertes und mit extremer Vorsicht zu genießendes.) Da müsste Google einiges zu haben.

Gruß Jens
Alles klar, danke für die Erklärung hab das jetzt mit Count(*) gelöst. Werden 3 Daten abgefragt und COUNT(*) ergibt 3 dann nehme das Foto und das klappt jetzt so wie ich mir das vorgestellt habe

Danke fürs helfen!
ovl 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] Table erstellen mit variablem Name Rutor PHP Tipps 2009 10 07.01.2010 12:52
[Erledigt] PHP-DB2 und REORG TABLE Desian Datenbanken 2 21.08.2009 18:27
SQL Error: Can't create table '.\XXX\user_informations.frm' (errno: 150) boolean Datenbanken 2 08.05.2009 11:01
Query optimieren __abcde__ Datenbanken 8 28.08.2008 10:44
PHP/MySQL: QCodo's Code-Generator Zergling-new Tutorials 2 09.05.2008 05:33
Import von innoDB-Tabellen, #1005 - Can't create table Zergling-new Datenbanken 0 30.07.2007 10:49
Parsen von Delimitern Basti Tutorials 0 30.09.2006 21:24
Truncate table Datenbanken 5 20.01.2006 09:47
[mysql] Table Design bei grossen Datenmengen Datenbanken 5 02.10.2005 13:25
[Erledigt] Problem mit mySQL Datenbanken 7 27.09.2005 12:06
PHP-Fehlermeldung, weiss nicht mehr weiter PHP Tipps 2005-2 12 21.09.2005 12:56
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45
[Erledigt] table eintrag grösse Datenbanken 5 05.06.2004 02:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cat_id abfragen php, php tabelle mehrmals abfragen, php 3. durchlauf, db2, key value tabelle, abfragen

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