mySQL - 2 Abfragen in einer

  • Moin moin.


    Ich hab momentan ein paar Schwierigkeiten mit mySQL und versuche das Resultat eines ersten Queries für den zweiten Query zu benutzen.
    Ich bin mir ziemlich sicher, dass das irgendwie mit JOIN o.ä funktionieren müsste, aber auch nach zig maligem lesen von Docs und Beispielen verstehe ich diese funktion einfach null xD


    Folgendes Szenario:
    Ich habe eine Tabelle mit id|groupId|name|value von dem ich nach groupId kategorisiert zufällig mehrere Zeilen auslesen möchte.


    Habe ich also in der Tabelle etwa stehen


    [code]
    1 | 1 | a | a
    2 | 1 | a | b
    3 | 1 | b | a
    4 | 2 | a | a
    5 | 2 | a | b
    6 | 2 | b | a
    7 | 3 | a | a
    usw...{/code]


    Möchte ich von sechs zufälligen groupId's (wir gehen mal davon aus max groupId > 6 EINEN zufälligen Eintrag haben.
    Zwar kriege ich es so weit hin, mir 6 zufällige groupId's ohne Duplikat ausgeben zu lassen, aber von diesen 6 zufälligen groupId's dann (vermutlich mittels join?)
    jeweils eine zufällige Zeile zu nehmen, kriege ich einfach nicht gebacken.


    Kann mir da vielleicht jemand weiterhelfen?


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Ist zwar verwirrend, aber eigentlich ganz gut zu verstehen. Hier mal ein Beispielcode aus einer meiner Plugins:


    PHP
    $sql = "SELECT packages.*, language_item.languageItemValue
    					FROM wcf".WCF_N."_package packages
    					LEFT JOIN wcf".WCF_N."_language_item language_item
    					ON language_item.languageItem = packages.".$this->searchType."
    					AND language_item.languageID = ?
    					WHERE (language_item.languageItemValue LIKE ? 
    					OR packages.".$this->searchType." LIKE ?)";

    Erklärung (Hoffe ich erkläre es richtig). Du nimmst als erstes packages.* (Also alle Spalten auf der Package Tabelle (WHERE wcf1_package packages)) und gehst mittels LEFT JOIN dann in die "wcf1_language_item" und benennst diese Tabelle entsprechend (Der Name ist eig egal, sind wie Variablen), der Rest sollte eigentlich selbstsprechend sein. (LEFT JOIN, damit es am Anfang(?) der Tabelle gestzt wird. Gibt noch RIGHT JOIN).


    Ansonsten zeig doch mal deine Tabellen und was du genau vor hast, dann könnte ich dir eine Query notfalls auch zusammen basteln.


    LG


    P.S. $this->searchType ist einfahc nur der Name der Spalte. ;)

  • Habe es jetzt mit rumbasteln mit nem Subquery hinbekommen. Aber das JOIN irritiert mich trotzdem ohne Ende. Was genau macht die Funktion? Ich blick das nicht :D


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'