richard: mysql abfrage

Beitrag lesen

hallo,

zunächst vielen dank llya für deine zeilen!
ich freu mich.

ich würde nicht das wort reihen benutzen, sondern man spricht in aller regel von datensätzen. klingt ein wenig kleinlich, hilft aber ungemein beim austausch von informationen und erleichtert somit die hilfestellung.

danke!

die frage ist, ob man nicht diese drei tabellen eventuell zu einer zusammenführen könnte. das würde vieles erleichtern.

ich hab gleich die union syntax angesehen, wird aber noch einen moment dauern, bis ich den ganz verstanden hab. der schreibt das ergebnis ja nicht irgendwohin, sondern speichert alle select's und gibt sie gemainsam aus, oder?

SELECT spalte1, spalte2...
FROM sack1, personen
WHERE sack1.name = personen.name
AND personen.status = 'gesucht'

danke auch hierfür. mein ansatz wäre gewesen eine abfrage aus personen zu machen, den zu vergleichenden datensatz zwischenzuspeichern und dann in die 'säcke' suchen zu gehen. aber dann schenkt man man ja die fähigkeiten der datenbank her..
vom variablensalat ganz zu schweigen.

oder mit anderen worten, was genau bilden den diese drei tabellen ab ?

mein beispiel war vereinfacht aber der eigentliche inhalt dürfte für 'insider' nicht schwer nachvollziehbar sein:

eine fragebogendatenbank. 30 fragen mit jeweils 2 bis 5 unterfragen (sprich dazugehörigen datensätzen in jeweils einer tabelle)
meine 'säcke' sind also 'daten_frage1', 'daten_frage2',.. usw.

kurzprinzip: jeder der ausfüllt hat von vornherein eine id. ein ausgefüllter fragebogen (30Fragen) kennzeichnet sich durch die gleiche phpsessionid. ist die session gekillt oder abgelaufen kann der fragebogen nochmal ausgefüllt werden. (=>gleiche userid, andere sessionid)

eine solche tabelle besteht aus ->phpsessionid, ->userid, und unterschiedliche vielen zusätzlichen feldern die jeweils eine ja/nein-, 1,2,3oder4-, oder textfeld_data- Information enthält.

die personentabelle heißt eigentlich 'sessions'. bekommt einen datansatz mit ->phpsessionid, userid, session_startzeit und einer Information ob die session regulär beendet worden ist.

sicher kein ideales konzept und dass es teilweise redundant ist fällt mir auch auf aber jetzt muss ich die daten zu den fragen wieder herausdröseln. die sessions-tabelle sagt mir wonach ich suchen muss. user mit der id 1 z.b. kommt mit 3 verschiedenen phpsessionid's in der sessions-tabelle vor. ich muss die erste nehmen, und nun aus allen daten_... tabellen den dazugehörigen datensatz holen (am besten mit SELECT *, weil es unterschiedlich viele felder gibt)(und wenn eine session abgebrochen wurde gibt es vielleicht nicht in jeder tabelle einen datansatz dazu).
ich müsste nur so einen session-satz (sowei vollständig)als z.b. csv-daten bekommen, dann wär ich schon glücklich.

ok, nun aber zu deinem problem. letztlich wäre erst einmal interessant, ob man deine drei tabellen nicht zu einer zusammenfassen kann.

ich habe ursprünglich deshalb für jede frage eine tabelle genommen, damit es nicht so lange dauert einen datensatz zu suchen und weil nur die daten jeweils einer frage in den selben feldern speichern lassen.
aber wenn ein nachträgliches zusammenfassen in der abfrage hilft..

und wenn nicht, dann hört sich das für mich wie drei abfragen eines inner joins an, die mit union verbunden werden.

wobei ich vorrausgesetzt habe, dass die spalte status zu der tabelle personen gehört und sicherlich die gleichen namen mehrfach in unterschiedlichen datensäötzen vorkommen können.

ja und nein. in einer daten_..tabelle gibt es bestimmt immer nur einen einzigen datensatz mit einer sessionid.

ich zerbrech mir mal weiter den kopf. aber über komentare (am besten gut gemeinte) oder sogar ratschläge oder kritik freue ich mich.

lg
richard