php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.01.2012, 10:25  
Neuer Benutzer
 
Registriert seit: 26.01.2012
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
jpengy2000 befindet sich auf einem aufstrebenden Ast
Standard MySql - Kombination mit mehreren Datensätzen

Hallo,

stehe gerade irgendwie auf dem Schlauch. So sieht meine Tabelle aus.

Ich würde gerne jetzt den User (userID) haben, der aus Deutschland und aus Berlin kommt.

So was in etwa

(attrID = 10 AND value = 'D')
AND (attrID = 15 AND value = 'Berlin')


So funktioniert es aber nicht. Hat einer von euch eine mögliche Lösung.


| userID | attrID | value |

| 12546 | 10 | D |

| 12546 | 15 | Berlin |

| 03463 | 10 | A |

| 03463 | 10 | Wien |


Grüße
Manuel
jpengy2000 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.01.2012, 10:31  
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

du brauchst einen sogenannten Self-Join, musst die Tabelle also in EINER Abfrage 2 mal beackern, denn es sind ja 2 verschiedene Datensätze (AND würde SONST nur innerhalb eines Datensatzes funktioniere

Code:
SELECT * FROM tabelle AS a
LEFT JOIN tabelle AS b on 
  a.user_id=b.user_id AND a.attrID!=b.attrID
WHERE
 a.attrID=10 AND
 b.attrID=15 AND
 a.value='D'
 b.value='Berlin'
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 26.01.2012, 10:38  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jpengy2000 Beitrag anzeigen
Hallo,

stehe gerade irgendwie auf dem Schlauch. So sieht meine Tabelle aus.

Ich würde gerne jetzt den User (userID) haben, der aus Deutschland und aus Berlin kommt.

So was in etwa

(attrID = 10 AND value = 'D')
AND (attrID = 15 AND value = 'Berlin')


So funktioniert es aber nicht. Hat einer von euch eine mögliche Lösung.


| userID | attrID | value |

| 12546 | 10 | D |

| 12546 | 15 | Berlin |

| 03463 | 10 | A |

| 03463 | 10 | Wien |


Grüße
Manuel
Deiner UserID ist sicher int, oder? Dann ohne führende 0.Und AttrID für Wien ist sicherlich 15, oder? Egal.

Code:
test=*# select * from jpengy ;
  uid  | aid | value
-------+-----+--------
 12546 |  10 | D
 12546 |  15 | Berlin
  3463 |  10 | A
  3463 |  15 | Wien
(4 rows)

test=*# select uid from (select uid from jpengy where aid=10 and value = 'D' intersect select uid from jpengy where aid=15 and value='Berlin') foo;
  uid
-------
 12546
(1 row)
und tschüß.
akretschmer ist offline   Mit Zitat antworten
Alt 26.01.2012, 11:02  
Neuer Benutzer
 
Registriert seit: 26.01.2012
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
jpengy2000 befindet sich auf einem aufstrebenden Ast
Standard

Erstmal danke für eure Hilfe.

@eagle275
Scheint bei mir nicht so richtig zu funktionieren.

@akretschmer
Leider ist die userID kein int sondern ein string.
Wie sieht es mit der Performance aus, wenn noch mehrere Kombinationen hinzukommen?
jpengy2000 ist offline   Mit Zitat antworten
Alt 26.01.2012, 11:09  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jpengy2000 Beitrag anzeigen
Erstmal danke für eure Hilfe.

@eagle275
Scheint bei mir nicht so richtig zu funktionieren.

@akretschmer
Leider ist die userID kein int sondern ein string.
Wie sieht es mit der Performance aus, wenn noch mehrere Kombinationen hinzukommen?
Die Performance wäre sicher besser, wenn man passende Datentypen verwenden würde. Ansonsten: passende Indexe, da böte sich ja ein uniqe an und das sollte dann auch flott gehen. Mehr: siehe EXPLAIN ANALYSE <query>

Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 26.01.2012, 12:34  
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

Code:
SELECT * FROM tabelle AS a
LEFT JOIN tabelle AS b on 
  a.user_id=b.user_id
WHERE
 a.attrID=10 AND
 b.attrID=15 AND
 a.value='D' AND
 b.value='Berlin'
probier es halt so ... ich teste das nicht jedesmal an meiner Datenbank
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 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
Mysql funktioniert nicht (Erweiterung nicht erkannt!?) pfump Server, Hosting und Workstations 10 17.03.2012 11:07
[Erledigt] MySQL Abfrage in mehreren Tabellen ausgeben Camee PHP Tipps 2010 2 03.11.2010 23:58
[Erledigt] PHP bekommt keine Verbindung zu MySQL SaKe Datenbanken 15 20.09.2010 14:45
[Erledigt] INSERT INTO zwei Tabellen mit Foreign Key und mehreren Datensätzen - wie? 6setzen PHP Tipps 2009 18 24.11.2009 14:21
mysql - ein feld gefüllt mit mehreren werten taurus PHP Tipps 2009 37 03.02.2009 23:07
MySQL: Performance-Probleme mit mehreren Indizes Zender Datenbanken 8 08.01.2009 20:52
[MATCH...AGAINST] mit mehreren Tabellen und Datensätzen? becks123 Datenbanken 6 20.06.2007 12:17
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
mysql: sortieren mit mehreren prioritäten PHP Tipps 2005-2 4 16.06.2005 08:54
MySql error -- Suchfunktion mit mehreren Begriffen PHP Tipps 2005 1 12.04.2005 21:06
[Erledigt] MySQL Abfrage aus mehreren Tabellen Datenbanken 1 12.04.2005 17:53
Zählen von MySql Datensätzen b++ PHP Tipps 2005 5 04.04.2005 16:34
[Erledigt] Kombination von mehreren Arrays PHP-Fortgeschrittene 27 18.02.2005 23:33
Mysql Fehler beim auslesen von Datensätzen Datenbanken 4 19.10.2004 10:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php kombinatorik

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