Autor |
Nachricht |
Achim M.
Threadersteller
Dabei seit: 17.03.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 09.06.2008 14:31
Titel SQL-Problem |
 |
|
Ich habe eine MySQL-Tabelle mit einer etwas ungünstigen Struktur (an der ich nichts ändern kann).
Alle Produkte, die zu einer Verpackungseinheit gehören, haben eine gemeinsame Zahl im Feld "feld1". Nun sollen alle Produkte herausgesucht werden, die zu einer Verpackungseinheit gehören, bei der bei einem Produkt dieser Verpackungseinheit ein "J" im "feld2" vorhanden ist.
Hier der Aufbau, um die Problematik besser zu verstehen:
Code: | id feld1 feld2 feld3
--------------------------------
1 234 J produkt1
2 234 produkt2
3 234 produkt3
4 567 produkt4
5 567 produkt5
6 666 J produkt6
7 666 produkt7
8 789 produkt8
9 789 produkt9
10 789 produkt10
11 789 produkt11 |
Die Suchabfrage sollte also als Ergebnis 'produkt1','produkt2','produkt3' (Verpackungseinheit ' 234') und 'produkt6','produkt7' (Verpackungseinheit ' 666') haben.
Im Augenblick löse ich das mit einer Schleife in PHP. Ich denke aber, das es auch eine intelligentere Lösung mittels SQL-Abfrage geben müsste. Jemand eine Idee?
Gruß
Achim
|
|
|
|
 |
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 49
Geschlecht:
|
Verfasst Mo 09.06.2008 15:04
Titel
|
 |
|
verstehe grad das problem nicht so recht, aber würde dir GROUP BY nicht schon helfen?
Code: |
select id, feld1, feld2, feld3 from tabelle where feld2 = "J" group by feld1
|
|
|
|
|
 |
Anzeige
|
|
 |
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 09.06.2008 15:05
Titel
|
 |
|
Code: | SELECT id FROM tabelle WHERE feld1='$feld1', feld1='$feld1x', feld2='J' |
Oder nicht?
//edit: primus: ne, dabei sind doch nicht nur die 243 und 667 (o.ä.) ausgewählt?
Zuletzt bearbeitet von Smooth-Graphics am Mo 09.06.2008 15:05, insgesamt 1-mal bearbeitet
|
|
|
|
 |
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 51
Geschlecht:
|
Verfasst Mo 09.06.2008 15:37
Titel
|
 |
|
Code: |
SELECT t1.id,t1.feld1,t1.feld2,t1.feld3
FROM tabelle as t1
LEFT JOIN tabelle as t2
on t2.feld2 = "J"
where t1.feld1 = t2.feld1;
|
|
|
|
|
 |
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 09.06.2008 15:48
Titel
|
 |
|
Code: | SELECT a.feld3
FROM tabelle as a
INNER JOIN tabelle as b
ON b.feld1 = a.feld1
WHERE b.feld2 = 'j' |
ungetestet.
Edit: Ho, zehn Mintuen, ich war abgelenkt.. e2: Nein, Gerüstbauer vorm Fenster.
Zuletzt bearbeitet von m am Mo 09.06.2008 15:55, insgesamt 2-mal bearbeitet
|
|
|
|
 |
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 51
Geschlecht:
|
Verfasst Mo 09.06.2008 15:53
Titel
|
 |
|
m hat geschrieben: |
Edit: Ho, zehn Mintuen, ich war abgelenkt..  |
du wirst alt mein bester... wieder bälle geguckt, wa??
|
|
|
|
 |
Achim M.
Threadersteller
Dabei seit: 17.03.2003
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 09.06.2008 16:05
Titel
|
 |
|
pixelpapst303 hat geschrieben: | Code: |
SELECT t1.id,t1.feld1,t1.feld2,t1.feld3
FROM tabelle as t1
LEFT JOIN tabelle as t2
on t2.feld2 = "J"
where t1.feld1 = t2.feld1;
|
|
Hab's gerade getestet: Es funktioniert, genau wie gewünscht. Vielen Dank! Auch den anderen Helfern natürlich.
Gruß
Achim
|
|
|
|
 |
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 51
Geschlecht:
|
Verfasst Mo 09.06.2008 16:15
Titel
|
 |
|
m hat geschrieben: | e2: Nein, Gerüstbauer vorm Fenster. |
schubs die sch**ß konkurrenz da runna!!! los schubs sie!
um ot zu vermeiden:
@achim:
freut mich
|
|
|
|
 |
|
|
 |
Ähnliche Themen |
Formmailer-Problem-neues problem
Css Problem
css problem
VBS Problem (ADS usw)
CSS Problem
PHP Problem
|
 |