Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Gibt es dafür einen MySQL Befehl?

Frage Entwicklung Datenbanken

Mitglied: Letavino

Letavino (Level 1) - Jetzt verbinden

03.11.2010, aktualisiert 11:47 Uhr, 3515 Aufrufe, 13 Kommentare

Hallo, ich komme bei einem speziellen Problem leider nicht weiter und hoffe, ihr könnt mir helfen!

Ich schreibe eine Seite in php mit MySQL Datenbank.
Nun bräuchte ich einen Befehl, der etwa so aussehen müsste:

Wenn in Spalte "a" ein bestimmter Wert steht, guck was in Spalte "b" steht und gib alle Datenreihen aus, die in Spalte "b" den gleichen Wert wie das vorherige "b" haben.

Mit zwei sql Abfragen müsste ich es hinbekommen:

Select 'b' Where 'a' = wert
Select * Where b = erstes ergebnis

Aber da ich noch im lernen bin, würde es mich interessieren, ob man das ganze auch in einer Abfrage unterbringen kann.
(wahrscheinlich wieder ein kleiner Trick, der mir vorher nicht bekannt war ;) )

Lg, Florian
Mitglied: Balu90
03.11.2010 um 11:17 Uhr
SELECT * FROM DATENBANK WHERE DATENBANK.A = [WERT] AND DATENBANK.B = DATENBANK.A

Kann dir leider keine Garantie auf Richtigkeit gaben, weil ich mich in SQL nicht richtig auskenne. So würde ich es mit einer FoxPro Datenbank machen, die auch auf SQL Befehlen basiert.

lg

Balu
Bitte warten ..
Mitglied: em-pie
03.11.2010 um 11:21 Uhr
Moin,
in der Hoffnung, dass ich dich richtig verstanden habe:

Sinniger wäre doch
Select * from DB where a=Wert AND b=Wert

Er sollte dir jetzt alles ausspucken, was in Spalte a und b den selben Wert hat

gruß
meistro
Bitte warten ..
Mitglied: Letavino
03.11.2010 um 11:24 Uhr
Danke schonmal für die Antwort!

Aber, wenn ich "WHERE DATENBANK.A = [WERT]" schreibe,
kommen als Ergebnis ja nur solche Datenreihen, die diesen Wert in der Datenbank 'a' stehen haben., oder nicht?
Ich hätte aber auch gerne alle Datenreihen, bei denen der Wert b mit dieser Reihe übereinstimmt.

Lg
Bitte warten ..
Mitglied: Balu90
03.11.2010 um 11:27 Uhr
Zitat von Letavino:
Danke schonmal für die Antwort!

Aber, wenn ich "WHERE DATENBANK.A = [WERT]" schreibe,
kommen als Ergebnis ja nur solche Datenreihen, die diesen Wert in der Datenbank 'a' stehen haben., oder nicht?
Ich hätte aber auch gerne alle Datenreihen, bei denen der Wert b mit dieser Reihe übereinstimmt.

Lg

Das ist ein verknüpfter Ausdruck...

WHERE DATENBANK.A = [WERT] AND DATENBANK.B = DATENBANK.A

Nur wenn beide Bedingungen erfüllt sind wir der Datensatz selektiert.
Bitte warten ..
Mitglied: Letavino
03.11.2010 um 11:42 Uhr
Ich sehe, ich habe mich da doch recht undeutlich ausgedrückt.
Daher ein kleines Beispiel:

Datensatz 1:
a = 1
b = 2

Datensatz 2:
a = 4
b = 3

Datensatz 3:
a= 3
b= 2

Wenn mein Wert für 'a' nun 1 ist, findet man diesen ja in Datensatz 1.
Nun soll jeder Datensatz ausgegeben werden, bei dem der Wert für 'b' mit dem 'b' in Datensatz 1 übereinstimmt.
Also wird nicht nur Datensatz 1 ausgegeben, wie es bei "where a = wert" der fall wäre, sondern in diesem Fall würde Datensatz 1 UND Datensatz 3 ausgegeben.
(Kann ja auch sein, dass man sowas garnicht in eine Abfrage packen kann...)

Ich hoffe, das war etwas verstänlicher.

Lg
Bitte warten ..
Mitglied: Balu90
03.11.2010 um 11:57 Uhr
Hmm ich verstehe dein Problem, aber da fällt mir leider nichts ein, wie man das lösen könnte ... :/
Bitte warten ..
Mitglied: gnbosse
03.11.2010 um 12:24 Uhr
Am einfachsten geht es mit einer verschachtelten Abfrage:
SELECT * FROM Tabellenname where b = (SELECT b from Tabellenname where a='BESTIMMTERWERT')

|"""""Datenbank""""""" |
| |""Tabellenname"""| |
| | |"""""a""""|""""b"""""| | |
| | |----0-----|----1-----| | |
| | |----1-----|----2-----| | |
| | |----2-----|----3-----| | |
| | |----3-----|----1-----| | |


Ausgabe:

|a|b|
|0|1|
|3|1|


Getestet und läuft

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Letavino
03.11.2010 um 13:04 Uhr
ok, das funktioniert soweit schon ganz gut, vielen Dank!!
Das einzige Problem, das ich jetzt noch habe ist, dass es bisher nur zu funktionieren scheint, wenn 'a' nur einmal vorkommt.

also:

| Datenbank |
| | Tabellenname | |
| | | a | b | | |
| | | 0 | 1 | | |
| | | 1 | 2 | | |
| | | 2 | 3 | | |
| | | 3 | 1 | | |

| | | 0 | 2 | | |

Ausgabe bei a = 0:

|a|b|
|0|1|
|3|1|

|0|2|
|1|2|

Scheint noch nicht zu gehen.
Kann man das ganze dahingehend erweitern?
Oder müsste man sich da was ganz neues überlegen?

Lg
Bitte warten ..
Mitglied: gnbosse
03.11.2010 um 13:12 Uhr
Damit ich das richtig verstehe,

du hast in der Tabelle jetzt die angenommenen Werte:
| a | b |
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 1 |
| 0 | 2 |

Der Eingabewert bleint bei '0' und du möchtest in dem Falle die Ausgabe:
| a | b |
| 0 | 1 |
| 3 | 1 |
| 0 | 2 | <- Oder hierzu dann auch alle Datensätze bei denen b=2 ist?

Oder liege ich mit der Annahme daneben?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Letavino
03.11.2010 um 13:18 Uhr
Die Ausgabedaten sollten dann:

| a | b |
| 0 | 1 |
| 3 | 1 |
| 0 | 2 |
| 1 | 2 |

sein.

Also, wie deine vorgeschlagene Abfrage, nur dass alle 'a' mit dem wert 0 berücksichtigt werden sollen und nicht nur eins.
Ich hoffe, das ist einigermaßen verständlich.

Lg

Ps:
"Oder hierzu dann auch alle Datensätze bei denen b=2 ist?"

Genau so.
Bitte warten ..
Mitglied: gnbosse
03.11.2010 um 13:31 Uhr
Dann sollten 3 hinzugefügte Buchstaben reichen um den Zweck zu erfüllen:
SELECT * FROM Tabellenname WHERE b=ANY(SELECT b FROM Tabellenname WHERE a='EINGABEWERT') ORDER BY b

mit dem ORDER BY sieht das dann genau so aus, wie du es möchtest, hoff ich :D
Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Letavino
03.11.2010 um 13:45 Uhr
Klappt nun alles genauso, wie es soll.
Da hat doch doch wieder einmal was gelernt ^^

Vielen Herzlichen Dank!

Lg
Bitte warten ..
Mitglied: gnbosse
03.11.2010 um 13:52 Uhr
Keine Ursache, freut mich das ich helfen konnte.
Weiterhin viel Erfolg mit deiner Seite!

Mit freundlichen Grüßen
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
Firewall
gelöst Gibt es ein fertiges Web-Tunnel-Gateway? (27)

Frage von StefanKittel zum Thema Firewall ...

DNS
Nslookup gibt falschen DNS Namen zurück (3)

Frage von ultrapottoti zum Thema DNS ...

PHP
PHP MySQL Login (7)

Frage von Yanmai zum Thema PHP ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...