ueberlasteter-admin
Goto Top

Mit einem Stichwort a la google versch. Tabellen ohne join abfragen?

gibt das die Fabrik her?

Hallo Leute,

ich habe eine Frage, ist es möglich mit einem input feld, eine Abfrage über sagen wir mal 8 Tabellen mit jeweils 16 versch. attributen durchzuführen?

Ansonsten hat jemand ein vorschlag wie man sowas lösen kann, ohne dass ich für jede tabelle eine Abfrage machen müsste? (8Stück)

Detail: Ich hab 8 Arten von gebäuden. Alle 8 haben unterschiedliche funktionen und eigenschaften.
Ich brauche eine Suchfunktion die das so einfach wie möglich hinbekommt.
Beispiel: Gebäude 1:Laden Gemüse standtort America mitarbeiter 20
Gebäude 2:Fabrik 100 Paneelen am Tag 30?/Kosten die Woche
usw.

Jedes Gebäude hat ne eigene tabelle wegen den Attributen. Es ist nicht möglich alle in eine Tabelle zu schreiben!Eigentlich schon aber in dieser sache erst mal nicht sinnvoll.
Ich möchte jetzt in ein einziges inputfeld "Fabrik + Paneelen + am Tag %" eingeben.

Bekommt mysql das auf die Reihe?

Content-ID: 14063

Url: https://administrator.de/contentid/14063

Ausgedruckt am: 15.11.2024 um 11:11 Uhr

ueberlasteter-admin
ueberlasteter-admin 05.08.2005 um 13:19:18 Uhr
Goto Top
Update:
Habs aufm zettel vollbracht, naja oder auch viell. nicht theorie halt.

Ist es sinnvoll von der Performace her & vom Stil eine Schleife zu machen (verschatelt)
die die Tabelle abgeht, dann die attribute und nach dem stichwort sucht?

das wären verflucht lass mich mal nachrechnen... 90 Abfragen 15 Attribute pro Tabelle mal 6 Tabellen?

Sinnvoll?
tinte777
tinte777 12.08.2005 um 00:34:30 Uhr
Goto Top
hi,

klar mit where, and, like usw. und geht in den meisten Fällen auch ohne Inner-Join, da du im select ja auch Listen oder Platzhalter eingeben kannst.

Deine Tabellenaufteilung ist für diese einfachen Abfragen aber eher ungeeignet (google mal unter Normalisierung).

Hast du dann deine drei oder vier Tabellen (Ort, Haus, Mitarbeiter, Produkt) ist bei einer Abfrage ein sauberes Ergebnis zu erzielen.

noch das Auslesen:

$input = "a1 a2 a3 a4"
$suche = explode (" ", $input);

oder

$input = "a1+a2+a3+a4"
$suche = explode ("+", $input);

und array $suche in die Select-Anweisung einlesen - hier muß dann auch klar sein, was in welcher Tabelle steht, denn sonst kommt es zu ungewollten Mehrfachtreffern und wenn du Pech hast ist die Liste so lang wie du Druckerpapier hast.

lg tinte7
13369
13369 15.08.2005 um 16:33:23 Uhr
Goto Top
MySQL bietet die Moeglichkeit einer Volltextsuche. Dafuer musst du aber der entsprechenden Spalte diese Eigenschaft geben.

ALTER TABLE tabelle ADD FULLTEXT(spalte);

Diese funktion verschnellert bei einer grossen Menge an Datensaetzen. Leider sind spaetere Aenderungen an der Tabelle sehr langsam und man kann nur nach Woertern mit mindestens 4 Zeichen suchen.

Weitere Optionen:

+suchbegriff: Die mit einem Pluszeichen versehenen Suchbegriffe muessen alle vorkommen.

-suchbegriff: Es werden keine Datensaetze ausgegeben wo, die den durch ein Minus gekennzeichneten Suchbegriff enthalten.

suchbegriff, <suchbegriff: Das groesser-Zeichen gibt dem Suchbegriff eine hoehere Prioritaet, das minus-Zeichen umgekehrt. So wird die Sortierreihenfolge der Treffer beeinflusst.

~suchbegriff: Dieser Suchbegriff wird ignoriert.

Suchen kannst du dann mit

SELECT * FROM tabelle WHERE MATCH (spalte) AGAINST (begriff1, -begriff2, +begriff3);

Oder in deinem Fall: SELECT * FROM tabelle1, tabelle2, tabelle3, etc. WHERE MATCH (tabelle1.spalte, tabelle2.spalte, tabelle3.spalte, etc.) AGAINST (begriff1, begriff2, begriff3, etc.);

Bei dem, was da in der Klammer nach MATCH steht bin ich mir nicht so sicher, ob das geht, aber probiers einfach mal aus.

Markus