Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
MySQL: Verzwicktes Query [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MySQL: Verzwicktes Query


 
octane
23-09-2004, 16:59 
 
Hi Leute,

hab da ein Problem mit ner Abfrage die ich einfach nicht hinbekommen will:
Gegeben sind die beiden folgenden Tabellen:


table1
id title
=================================
| 1 | name1 |
--------------------------------|
| 2 | name2 |
--------------------------------|
| 3 | name3 |
---------------------------------

table2
pid field_name data
=================================================================
| 1 | bereich | wounds |
-----------------------------------------------------------------
| 1 | kategorie | pigs |
-----------------------------------------------------------------
| 2 | bereich | wounds |
----------------------------------------------------------------
| 2 | kategorie | ruminants |
-----------------------------------------------------------------
| 3 | bereich | claws |
-----------------------------------------------------------------
| 3 | kategorie | pigs |
-----------------------------------------------------------------


Angezeigt werden sollen:
table1.id und table1.title bei denen folgendes zutrifft:
(table2.field_name='bereich' AND table2.data='wounds')
AND
(table2.field_name='kategorie' AND table2.data='pigs')

Das gewünschte Ergebnis bei diesem Beispiel wäre:
numrows: 1
#1 id: 1, title: name1


Das Problem ist die zweite Bedingung die eintreten muss, die liegt ja immer in ner anderen Zeile als die erste die zutrifft.
Dass beide Bedingungen
(table2.field_name='bereich' AND table2.data='wounds')
AND
(table2.field_name='kategorie' AND table2.data='pigs')
innerhalb einer Zeile zutreffen, kann nie sein, deshalb krieg ich bei querys mit der zweiten bedingung immer 0 Ergebnisse.

Subquerys sind auf Grund einer MySQL Version <4.1 nicht möglich(4.0.20)

Ich hoffe ihr könnt mir da weiterhelfen

Danke und viele Grüße

octane

 
mrhappiness
23-09-2004, 17:34 
 
wie wär's mit OR statt AND?

 
octane
23-09-2004, 17:41 
 
nee, OR bringt nix, beide Bedingungen müssen, nicht können zutreffen....

Trotzdem danke für den Vorschlag!

 
MaxP0W3R
23-09-2004, 17:50 
 
Die 2. Tabelle muss weiter normalisiert werden...


ausserdem _können_ beide Bedingungen gar nicht gleichzeitig eintreten, sondern nur nacheinander, und dann hast du 2 ergebnisse

also irgendwas ist bei deiner Planung schiefgegangen

versuch einfach mal die 2. tabelle zu normalisieren, d.h.

pid bereich data
pid kategorie data

dann kannst du bequem in eine ergebniszeile die 2 sachen einer id zuordnen

alles andere macht aus meiner bescheidenen sicht der dinge heraus wenig sinn, selbst wenn unterabfragen möglichwären

 
goth
23-09-2004, 17:52 
 
es kann aber immer nur eine zutreffen ... dehalb doch OR ...

 
octane
24-09-2004, 13:32 
 
an der struktur gibt es leider nichts zu rütteln, trotzdem danke für eure vorschläge...

 
derHund
24-09-2004, 16:02 
 
hmm,

an der struktur gibt es leider nichts zu rütteln, trotzdem danke für eure vorschläge...
wenn du OR benutzt, erhälts du doch die datensätze, die das AND erfüllen würden, jeweils zwei mal!? wieso fragst du diese eigenschaft nicht einfach ab?

 
goth
24-09-2004, 16:07 
 
Original geschrieben von octane
an der struktur gibt es leider nichts zu rütteln, trotzdem danke für eure vorschläge...

Und an der Logik auch nicht ... beide Bedingungen für einen DS können einfach nicht zutreffen ... das sollte selbst für Dich einsehbar sein ... :dontknow:

Also: INNER JOIN ... 2 mal ... !

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:29 Uhr.