mysql select, abhängig von 2. tabelle
mk
- datenbank
Hallo Leute,
was ist daran falsch:
"SELECT * FROM thisvote, thisfile WHERE thisfile.id_thisfile = thisvote.id_thisfile AND thisvote.id_thisuser <> ".$_SESSION["loginuser"]["id_thisuser"]." AND thisfile.id_thisuser = ".$_SESSION["loginuser"]["id_thisuser"]." ORDER BY thisvote.timestamp DESC"
:)
Ich möchte aus Tabelle A alle Einträge, die NICHT mit der LoginUserId übereinstimmen. ABER! Auch die, die in Tabelle A über id_thisfile in Tabelle B bei id_thisuser mit der LoginUserId übereinstimmt.
Tabelle A = thisvote
Tabelle B = thisfile
thisvote.id_thisvote
thisvote.id_thisuser
thisvote.id_thisfile
thisfile.id_thisfile
thisfile.id_thisuser
Wer hat das schonmal so gemacht?
mk
"SELECT * FROM thisvote, thisfile
Ich möchte aus Tabelle A alle Einträge, die NICHT mit der LoginUserId übereinstimmen. ABER! Auch die, die in Tabelle A über id_thisfile in Tabelle B bei id_thisuser mit der LoginUserId übereinstimmt.
Vermutlich möchtest Du Ergebnismengen verschiedener SELECTs kombiniert ausgeben lassen mithilfe des Operators: JOIN
"SELECT * FROM thisvote, thisfile
Ich möchte aus Tabelle A alle Einträge, die NICHT mit der LoginUserId übereinstimmen. ABER! Auch die, die in Tabelle A über id_thisfile in Tabelle B bei id_thisuser mit der LoginUserId übereinstimmt.
Vermutlich möchtest Du Ergebnismengen verschiedener SELECTs kombiniert ausgeben lassen mithilfe des Operators: JOIN
UNION statt JOIN natürlich, sorry
UNION statt JOIN natürlich, sorry
Fehler: The used SELECT statements have a different number of columns.
tjoa...
naja, ich guck dann mal weiter.
danke dennoch...
UNION statt JOIN natürlich, sorry
Fehler: The used SELECT statements have a different number of columns.
Wenn Du zwei Datensatzmengen per UNION kombinierst, müssen oft Anzahl und Typ (abhängig vom verwendeten RDBMS) der abgefragten Datenfelder identisch sein:
Beispiel:
SELECT
DF1,
DF2
FROM
DT1
UNION SELECT
DF1,
DF2
FROM
DT2
Wenn Du zwei Datensatzmengen per UNION kombinierst, müssen oft Anzahl und Typ (abhängig vom verwendeten RDBMS) der abgefragten Datenfelder identisch sein:
Bei mir müssen sie identisch sein.
Bei mir sind die Felder leider nicht idendtisch:
Tabelle A = thisvote
Tabelle B = thisfile
thisvote.id_thisvote
thisvote.id_thisuser
thisvote.id_thisfile
thisfile.id_thisfile
thisfile.id_thisuser
Und ich denke, ich werde in der einen Tabelle kein "Extrawurstfeld" anlegen, damit ich diese Funktion nutzen kann... Da muss es mehrere Wege hin führen.
Gibt UNION auch Datensätze aus der Tabelle B aus? Wenn ja, dann ist es das Falsche.
Und ich denke, ich werde in der einen Tabelle kein "Extrawurstfeld" anlegen, damit ich diese Funktion nutzen kann... Da muss es mehrere Wege hin führen.
SELECT
'' as DF1,
DF2
FROM
DT1
UNION SELECT
DF1
DF2
FROM
DT2
Gibt UNION auch Datensätze aus der Tabelle B aus? Wenn ja, dann ist es das Falsche.
UNION ist geeignet mehrere Abfragen so zu sagen zu kombinieren. Ich hatte Dich so verstanden, dass Du die Ergebnismengen zweier Abfragen (die auf andere Tabellen "gehen") kombinieren willst.
UNION ist geeignet mehrere Abfragen so zu sagen zu kombinieren. Ich hatte Dich so verstanden, dass Du die Ergebnismengen zweier Abfragen (die auf andere Tabellen "gehen") kombinieren willst.
Ok. Die Variante '' as jenes werde ich mal ausprobieren.
Wäre es dann diese Lösung?
SELECT
id_vote,
id_file,
id_user
FROM
vote
UNION SELECT
'' as id_vote,
id_file,
id_user
FROM
file
ORDER BY
timestamp
DESC
Und wie geht es dann weiter? Wo schreibe ich die WHERE hin? Vor dem UNION? Es ist wie gesagt KEINE UND SELECT. Also ich will nicht dieses aus Tab A und jenes aus Tab B - sondern! > NUR etwas aus Tab A. Nämlich alles, wo die id_user nicht eine bestimmte ist und NUR alle die nimmt, die über id_file in file diese bestimmte Variable findet.
Also:
vote.id_user != variable
file.id_file == vote.id_file
file.id_user == variable
Genau so. Ich will nur aus Tab A was bekommen.
mk
Wäre es dann diese Lösung?
SELECT
id_vote,
id_file,
id_userFROM
voteUNION SELECT
'' as id_vote,
id_file,
id_userFROM
fileORDER BY
timestampDESC
Sieht nicht schlecht aus.
Und wie geht es dann weiter? Wo schreibe ich die WHERE hin?
Wie gewohnt die WHEREs platzieren.
Genau so. Ich will nur aus Tab A was bekommen.
Vergiss UNION. ;)
Nimm JOIN. Schau ruhig mal in die MySQL-Onlinedoku. Da gibts tonnenweise Beispiele.
Vergiss UNION. ;)
Nimm JOIN.
*lol*
da fehlt ein apostroph und ein n - das wäre dann umgangssprachlich und bedeutet: Feierabend.
muchas gracias
oder wie sagt der bayer: schau'n'mer mal, dann sehn'mer scho'.
Vergiss UNION. ;)
Nimm JOIN.
*lol*
Sorry, ich hatte falsch geraten. :)
muchas gracias
Du könntest bei Deinen nächsten Fragen gleich am Anfang das Tabellendesign mitliefern. Zudem wäre es besser, wenn Du den tatsächlich generierten und an den Datenserver gesendeten SQLString postest statt den Programmcode. Solltest Du sowieso immer für Debugzwecke einbauen, so ein kleines "echo $SQLstring;". Und die SQLStrings immer schön strukturiert posten. Es gibt hier sogar ein Forums-Feature, dass dieses unterstützt.