#1
|
||||
|
||||
Software: - MySQL-Query-Problem
Hallo Leute!
Auch ich habe jetzt ein Problem. Ich code einen Onlineshop und brauche Hilfe bei einer SQL-Query. Die Query's, die ich derzeit in der Suchfunktion nutze lauten wie folgt (der Rest der Verarbeitung ist rausgeschnitten): Code:
SELECT * FROM hp_shop_items WHERE item_name REGEXP 'Suchbegriff' OR item_desc REGEXP 'Suchbegriff' OR item_hersteller REGEXP 'Suchbegriff' OR item_battyp REGEXP 'Suchbegriff' ORDER BY item_name ASC Code:
SELECT * FROM hp_shop_item_cat WHERE item_id='" . $obj->ID . "' Ich möchte jetzt die SQL's miteinander verknüpfen, sodass ich ein Limit in der ersten SQL auch in der zweiten nutzen kann, der will halt nicht so wie ich das will. Da einige Artikel in mehreren Kategorien vorkommen, muss ich mit 2 Tabellen arbeiten. Ich hoffe, das, was ich euch jetzt geschildert habe reicht euch aus und ihr könnt mir helfen, mein Problem zu lösen! Edit: Sehe gerade, dass mein Thread verschoben wurde. Wollte den auch hier reinschreiben, hab mich da wohl vertan, sorry.
__________________
Wissen ist Macht. Ich weiß nichts. Macht nichts. Geändert von ViTaCoKe (29-05-2007 um 09:35 Uhr). |
#2
|
||||
|
||||
Was für ein "Limit" meinst du ?
![]() |
#3
|
||||
|
||||
Das Limit ist... ich sage mal ... Nebensache. Es geht darum, dass ich mit der ID des Artikels (die ich in der Query ermittle), die Kategorien aus der anderen Query auslesen möchte.
Ich stelle mir die SQL ungefähr so vor (so funzt sie nur leider nicht): SELECT * FROM hp_shop_items s, hp_shop_item_cat c WHERE item_id='ID aus hp_shop_items' Verstehst du jetzt was ich meine? (Diese SQL möchte ich hinterher um ein Ergebnislimit erweitern, dass es ungefähr so aussieht: SELECT * FROM hp_shop_items s, hp_shop_item_cat c WHERE item_id='ID aus hp_shop_items' LIMIT 0, 4)
__________________
Wissen ist Macht. Ich weiß nichts. Macht nichts. |
#4
|
||||
|
||||
Achso, das geht so nicht, wie dus möchtest, ausser du willst, dass sich der komplette Ergebnissatz immer wieder wiederholt, wenn ein Artikel in mehreren Kats ist.
Wenn ein Artikel nur in einer Kategorie wäre, wäre das Überhaupt kein Problem, aber in mehreren Kat's, das kriegste viel zu viel unnütze Daten raus. Lass es in 2 Queries, da der erste ohnehin verhältnismäßig viel Performance fressen würde. (Ich hab früher auch gedacht, je mehr man in ein SQL-Statement reinpackt, desto besser. Aber bei manchen Fällen Vervielfachst du damit nur die Abfragedauer im Gegensatz zu einzelnen Queries ...)
__________________
![]() Raubkopierer, IT-Experten und E-Gamer in den Knast !!!
Kinderschänder, Sexualstraftäter, Bankräuber und Mörder in die Gesellschaft reintegrieren, wir brauchen Platz für Computer-Kriminelle in den Gefängnissen !!! Geändert von EEBKiller (29-05-2007 um 12:54 Uhr). |
#5
|
||||
|
||||
Das Problem ist, dass es in einzelnen Queries nicht funktioniert, darum will ich auf 2 umsteigen. Die Abfrage, ob ein Artikel bereits angezeigt wurde ist ja kein Thema, den Müll kann ich ja rausfiltern.
__________________
Wissen ist Macht. Ich weiß nichts. Macht nichts. |
#6
|
||||
|
||||
Ich darf voller Freude verkünden: Es hat sich erledigt!
Die SQL lautet wie folgt (komplett): Code:
SELECT * FROM hp_shop_items s, hp_shop_item_cat c WHERE (c.item_cat='kategoriezahl' AND c.item_id=s.ID) AND (s.item_name REGEXP 'suchbegriff' OR s.item_desc REGEXP 'suchbegriff' OR s.item_hersteller REGEXP 'suchbegriff' OR s.item_battyp REGEXP 'suchbegriff') ORDER BY s.ID ASC Meinetwegen kann das Thema geschlossen werden.
__________________
Wissen ist Macht. Ich weiß nichts. Macht nichts. Geändert von ViTaCoKe (30-05-2007 um 16:35 Uhr). |
#7
|
||||
|
||||
Nöööö, das Thema bleibt mal schön offen evtl. kann es ja weitergenutzt werden, da der Threadtitel ja ziemlich allgemein gehalten ist und so auch anlehnende Probleme besprochen werden können.
![]() ![]()
__________________
Gruß AMD-Powered |