SQL Query - komme nicht auf Lösung

solar22

Mitglied
Hallo!

ich habe zwei Tabellen in mySQL:

personen:
name|id

eigenschaften:
id|name|value|personenID


Ich habe folgendes Szenario:
Ich möchte alle Personen mit allen Eigenschaften und Name (also auch aus der 1. Tabelle) mit blauen Augen (also eigenschaften.name = Augenfarbe und eigenschaften.value = blau)

Wie realisiere ich dies mit SQL?
Ich probiere mich gerade mit JOINS rum, aber komme nicht drauf.

Danke im voraus!

Alex
 
Hi,

wenn ich Deinen Beitrag richtig verstanden habe, dann würde ich es mit INNER JOIN probieren, also so in der Art:

PHP:
$sql = 	"SELECT                
			eigenschaften.name,
			value,
			personenID,                
			personen.name
		FROM                
			eigenschaften
		INNER JOIN
			personen
		ON
			personenID = personen.id
		WHERE
			eigenschaften.name
		LIKE
			'Augenfarbe' 
		AND 
			eigenschaften.value
		LIKE 
			'blau'";
			
	$result = mysql_query($sql)
	OR die("Error: $result <br>".mysql_error());
	
		if ($result) { 
		
			while ($ar=mysql_fetch_array($result,MYSQL_ASSOC)) {
			
			 echo $ar["daswasdubrauchst"];
			}

z.B. statt $ar["daswasdubrauchst"] $ar["value"] einsetzen.

Ich habe es jetzt nicht ausprobieren können, aber das sollte funktionieren.

MfG

xetips
 
Zuletzt bearbeitet:
Ich glaube der Schlüsselsatz dabei ist "Personen mit allen Eigenschaften" die die Bedingung erfüllen.
Daher wird die erste Query wohl nicht das sein was gesucht ist. Wohl eher das hier:

SQL:
SELECT
  p.name,
  e.name,
  e.value
FROM 
  eigenschaften e
INNER JOIN
  personen p
ON 
  p.id = e.pers_id
WHERE 
  e.pers_id IN
  (SELECT DISTINCT pers_id FROM eigenschaften WHERE name = 'Augenfarbe' AND value = 'Blau')
;


PS: Das ist eigentlich eine N-N Beziehung. Warum hast du keine personen_eigenschaften Tabelle wo du einfach die FK kombinationen ablegst?
 
Zuletzt bearbeitet von einem Moderator:
Zurück