2011-01-15 12 views
0

Ich bin gerade auf dieser komplexen Abfrage die ersten Schritte muss ich schreiben und hatte gehofft, für Anregungen oder Feedback bezüglich Tabellenstruktur und die tatsächliche Abfrage selbst ..Run mehrere Abfragen MySQL basiert auf einer Reihe von ifs

I‘ Ich habe bereits meine Tabellen und Testdaten erstellt und versuche nun herauszufinden, wie und was in MySQL möglich ist. Hier

eine übersicht des Problems:

End Ergebnis: Auflistung der Raten basierend auf bestimmten abgefragten Kriterien (siehe unten):

Age: [ 27 ]<br> 
Spouse Age: [ 25 ]<br> 
Num of Children: [ 3 ]<br> 
Zip Code: [ 97128 ] 

Das Problem bei mir läuft in ist jedes Unternehmen Das bietet eine einzigartige Möglichkeit, mit der Rate umzugehen. Und ich suche den besten Ansatz für mehrere Abfragen basierend auf dem Unternehmen (eine Abfrage mit Ergebnissen für jedes Unternehmen mehr oder weniger alle in einem Ergebnissatz zusammengefasst).

Hier sind einige Fakten:

  • Jedes Unternehmen beschäftigt sich mit der Postleitzahl Bereiche, die im Abfrageergebnis unterstützen.
  • Jedes Unternehmen hat eine andere Methode zur Erhöhung der Geschwindigkeit auf dem Antragsteller, Ehepartner, Num der Kinder anhand der Berechnung: Beispiel,
  • Firma A durch bestimmt Rate: Antragsteller + Ehegatten + Kind (ern) = Rate (Alter innerhalb eines Bereichs für den Antragsteller relevant sein).
  • Firma B bestimmt die Rate durch die Gesamtzahl der Bewerber wie: 1, 2, 3, 4, 5, 6 + = Rate (und Alter wird ignoriert).

Zunächst, was würde ich diese Art von Abfrage nennen? Mehrfach verschachtelte Abfrage? Und sollte ich php darin verschränken, um das If() s zu bestimmen.

Antwort

0

Es ist nur 2 (oder wie viele) Abfragen. Nicht etwas besonderes oder technisches genannt. Wenn Sie 3 Unternehmen haben, werden Sie nur 3 Abfragen durchführen. usw. Sie werden nicht eine Menge Logik in Ihrer Abfrage wollen. Einige sind in Ordnung, aber manchmal ist es besser, es in PHP als MySQL zu machen. Manchmal sind 3 Abfragen besser als eine.

Sie verwenden PHP, um alles zu konstruieren. Sie führen jede Abfrage durch und erstellen dann die Ergebnismenge als Array. Nachdem alle 3 Abfragen ausgeführt wurden, haben Sie das Ergebnis-Ausgangsarray dreimal hinzugefügt. Dann wiederhole das und zeige es an.

In dem Sinn, Ihnen zu geben, was Sie wollten, werden Sie wahrscheinlich Gewerkschaftsanfragen betrachten. Grundsätzlich machen Sie n separate Abfragen, die von Union, die alle die gleichen Felder zurückgeben, und Sie können als Ergebnis durchlaufen, und erhalten Sie alle Ihre Daten von MySQL in einem Schuss.

bearbeiten

Als Antwort auf Ihren Kommentar, hier ist ein wenig Pseudo-Code, den Sie in die richtige Richtung zu bekommen.

query for company 1 
loop through results 
    put values needed for display in array 

query for company 2 
loop through results 
    put values needed for display in array 

loop through array 
    print results 
+0

Ich denke, dass dieser Ansatz für meine Erfahrung mit SQL am sinnvollsten ist. Ich denke, es gibt mehrere gleichermaßen legitime Möglichkeiten, dies zu tun, aber ich bin ein großer Fan der Trennung der Logik. – OldWest

+0

Kennen Sie ein PHP-Tutorial, das diese Art von Abfrage mit Arrays wie Sie vorgeschlagen zeigt? – OldWest

0

Angenommen, es gibt nicht viele Unternehmen und die Berechnungen sind nicht besonders komplex, sollten Sie in der Lage sein, eine Abfrage zu schreiben, die mithilfe CASE Aussage ziemlich wartbar ist, die auf der Grundlage der Unternehmensart eine andere Berechnung durchführt.

0

Sie sollten alle Ihre Berechnungen in SQL durchführen können. Dies scheint ein gutes Szenario für die Verwendung einer gespeicherten Prozedur zu sein, bei der Sie alle Daten mit den verschiedenen von den einzelnen Unternehmen benötigten Methoden erfassen und eine Ergebnismenge zurückgeben können.

select [calculate rate] rate from company1_table 
union all 
select [calculate rate2] rate from company2_table 
. 
. 
.