splat
Erfahrenes Mitglied
Hi,
ich habe 4 Tabellen die ich mit einer einzigen Suche abfrage. Die Tabellenstruktur sieht wie folgt aus:
Wie man sieht, hat jede Bestellung einen Sender und einen Receiver. Die ID für die Adresse des Empfängers steht direkt in der Tabelle Order. Der Sender hingegen hat dort die ID für seinen Eintrag in der Tabelle Customer. Dort bekommt man dann erst die ID für dessen Addresse.
Die Suche sieht jetzt so aus:
so funktioniert alles, jedoch durchsucht er nur den namen von "sender".
Wenn ich nun
mit
austausche, dann durchsucht er natürlich nur den Namen des Receivers. Wie kann ich das denn am besten kombinieren?
Habe es schon so probiert:
Doch so arbeitet sich mein MySQL zu Tode, so das ich das Query manuell beenden muss Das muss wohl irgendwie anders gehen Hat irgendjemand einen Vorschlag? Oder vielleicht auch Optimierungsvorschläge?
Gruß,
Marc
ich habe 4 Tabellen die ich mit einer einzigen Suche abfrage. Die Tabellenstruktur sieht wie folgt aus:
Code:
Order:
id | status | sender | recipient | product | ...
----------------------------------------------------------------------------
12 | paid | 20 | 40 | 5232 |
Product:
id | name | ...
----------------------------------
5232 | Stuhl |
5233 | Tisch |
Address:
id | name | company | postcode | ...
---------------------------------------------------
40 | heinz | Firma A | 23223 |
41 | fritz | Firma B | 43232 |
Customer:
id | email | address
-------------------------------------
20 | fritz@firma-b.com.au | 41
Wie man sieht, hat jede Bestellung einen Sender und einen Receiver. Die ID für die Adresse des Empfängers steht direkt in der Tabelle Order. Der Sender hingegen hat dort die ID für seinen Eintrag in der Tabelle Customer. Dort bekommt man dann erst die ID für dessen Addresse.
Die Suche sieht jetzt so aus:
PHP:
$qid = db_query("
SELECT o.id, [..,..,..]
FROM order o, product p, address ad, customer c
WHERE (o.id LIKE '$search' OR ad.name LIKE '$search')
AND ad.id = c.address
AND c.id = o.sender
AND p.id = o.product
AND o.status IN ('paid','complete','error')
ORDER by o.id DESC
LIMIT 0, 100
");
so funktioniert alles, jedoch durchsucht er nur den namen von "sender".
Wenn ich nun
PHP:
AND ad.id = c.address
AND c.id = o.sender
PHP:
AND ad.id = c.recipient
Habe es schon so probiert:
PHP:
AND (ad.id = o.recipient OR (ad.id = c.address AND c.id = o.sender))
Gruß,
Marc