myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   PHP Join Problem (https://mygully.com/showthread.php?t=2338484)

psychonetic 15.06.11 10:52

PHP Join Problem
 
Hallo, ich hoffe ich könnt mir weiter helfen, entweder ist die Lösung total einfach oder es geht gar nicht.

Also ich hab 2 Tabellen, und nun möchte ich von allen Einträgen die IDs haben wo die beiden Primärschlüssel übereinstimmen, aber gleichzeitig nur die wo die ID gleich der übergebende ID durch den User ist (Beispiel unten...). Ich hoffe ich versteht mein Problem, ich kann sonst auch die Tabellen posten.

Meine Werte die ich haben möchte:
ID Schlüssel
1 5
2 5
3 4
4 4
5 6

Hiervon nur die IDs 1 und 2.
Bei meinem aktuellen Join bekomme ich zusätzlich noch immer die IDs 3 und 4, aber die interessieren mich nicht.


Danke für eure Antworten.

kkhamburg 15.06.11 12:20

Das hat aber mit PHP nichts zu tun.

Du machst einen select der Felder die du willst auf Tabelle 1 AS a und einen join auf Tabelle 2 AS b
Als Where-Bedingung nimmst du a.schlüssel = b.schlüssel

psychonetic 15.06.11 18:34

Danke für deine Hilfe, ich werds mal probieren.

Naja aber PHP und SQL liegen aber weit beieinander.

slahn 15.06.11 19:19

Eine frage, wer findet noch das PHP und SQL weit beieinander liegen?

Nur weil man in PHP-Code sehr oft SQL-Anweisungen verwendet, ist es immer noch nicht das selbe ;).

sirleo 15.06.11 19:38

Ok Wortwahl ist etwas komisch, aber grundsätzlich hat er recht.
Wie wäre es mit Referenz konsultieren?
array_keys()
ist das was du suchst.
die Schlüssel noch für beide assoziativen Arrays sotieren und schon kannste damit wunderbar arbeiten.

Epeos 16.06.11 08:30

Zitat:

Zitat von psychonetic (Beitrag 22394141)
Naja aber PHP und SQL liegen aber weit beieinander.

Aber gaaaaanz weit. Das ist nicht mal das gleiche Paradigma. PHP ist eine imperative Sprache, SQL eine deklarative.

Du möchtest dies hier lesen: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

besonders den Teil über Programmierparadigmen.

Zu Deiner Frage: Benötigst Du den jetzt eine Lösung in PHP oder SQL? Falls SQL: Poste mal kurz die Tabellenstruktur, dann ist es einfacher.

Pillewutz 16.06.11 09:22

Zitat:

Zitat von kkhamburg (Beitrag 22392919)
Das hat aber mit PHP nichts zu tun.

Du machst einen select der Felder die du willst auf Tabelle 1 AS a und einen join auf Tabelle 2 AS b
Als Where-Bedingung nimmst du a.schlüssel = b.schlüssel

So machen es SQL-Anfänger... denn Du sorgst damit dafür, dass ein vollständiges Kreuzprodukt Deiner Tabellen durchlaufen werden muss.

Mach ein "SELECT ... FROM x ... JOIN y ON x.bla = y.bla".


P.S.:

@TE: Frag mich was Du mit PHP anstellen willst, wenn Du ehrlich gesagt keine Ahnung von PHP und SQL hast?

psychonetic 16.06.11 18:30

So um euch jetzt mal alle zu beruhigen....
Ich habe Ahnung von PHP und MySql, bin vlt kein Profi, aber auch kein Amateur.

Und ja Wortwahl war nicht gerade die beste^^
Aber erstmal danke für eure Antworten.

Ich werde es morgen bzw am Samstag ausprobieren, da ich zurzeit keine Zeit habe wegen Schule.

Danke für den Link Epeos, ich werd es mir mal gleich durch lesen, damit mir es nicht nochmal passiert.

So zurück zu meinem Problem:
Ein Join wie Pillewutz gesagt hat, klappt zwar, aber bekomme zu viele Einträge.
Entweder mache ich etwas falsch oder es geht nur mit 2 SQL Anweisungen.

Daher nochmal meine Tabellenstruktur:

Tabelle 1:
id | entry | anderes | author_id
3 .... 15
25 ..... 15
40 ... 18
20 .... 18

Tabelle 2:
id | name | etc.
15 Hans ....
18 Fritz ....

Jetzt bekomme ich die ID über die URL und möchte zu der ID, als Beispiel, ID 3 von Tabelle 1, und möchte alle weiteren IDs haben, wo die author_id gleich der author_id ist, die der ID 3 entspricht, also müsste ich als Ergebnis ID 25 bekommen.

Wäre nett, wenn ihr mir nochmal helfen könntet :)

jvdl 21.10.11 15:27

@Pillewutz, manche üben einfach nur :) Ich würde da jedoch ein kleines Projekt bevorzugen. Macht mehr spaß und man hat am ende vielleicht was davon ;)

Pillewutz sein Query ist schon soweit richtig. Sagmal bitte du die "id" in der Tabelle deklariert hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.